首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate容易总结

2012-11-20 
hibernate简单总结虽然,三大框架已经学了两大框架了,但是,都还只是有一个简单的印象。现在就总结一下hibern

hibernate简单总结
        虽然,三大框架已经学了两大框架了,但是,都还只是有一个简单的印象。现在就总结一下hibernate的简单印象。
         Hibernate把开发者从数据库编程中分离出来,在数据库外裹了一层面向对象的外衣,Java程序中所有进出数据库的操作都交由Hibernate来处理。它会为我们自动生成sql语句来操作数据库。
         有了Hibernate后,我们就不再需要写繁琐的sql语句,也不用把实体对象字段一个个拆开又组装。Hibernate还提供了一个和sql语句类似的hql语句,结合Hibernate后功能更为强大,能根据实体的状态来自动对数据库进行更新和插入。
        hql语句操作数据库,实际上也是要转化成标准的sql语句的,Hibernate根据用户所编写的xml映射文件来实现hql语句到sql语句的自动转换。xml映射文件是Hibernate中最为关键的配置文件,他定义了实体和数据表之间的联系,架起了两者间的桥梁。


     将hibernate跑起来,主要有以下几步:

     1、在http://www.hibernate.org/ 上下载hb。将antlr-2.7.6.jar、commons-collections-3.1.jar、dom4j-1.6.1.jar、hibernate3.jar、javassist-3.9.0.GA.jar、jta-1.1.jar、slf4j-api-1.5.8.jar、slf4j-simple-1.6.1.jar、mysql-connection-java-5.0.5-bin.jar这几个包导入到所建的项目下。

     2、配置hb的配置文件hibernate.cfg.xml,是hb的控制核心,

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory>  <!-- 让hb在运行时显示执行的sql语句 -->  <property name="show_sql">true</property>  <!-- 使显示的sql格式化 -->  <property name="format_sql">true</property>  <!-- 设定sql的方法,是mysql -->  <property name="dialect">  org.hibernate.dialect.MySQLDialect  </property>  <!-- jdbc驱动类的名字 -->  <property name="connection.driver_class">       com.mysql.jdbc.Driver  </property>  <!-- 数据库连接的url配置 -->  <property name="connection.url">  jdbc:mysql://localhost:3306/mynetjavablog  </property>  <!-- 数据库用户名和密码的配置 -->  <property name="connection.username">root</property>  <property name="connection.password">netjava</property>  </session-factory></hibernate-configuration>

     以上配置是必须的。与数据库的连接,以前在MVC里,这些都是写在连接数据库的工具类里面的,现在只需在这个配置文件里进行配置就OK了。

       3.将hb的配置文件配置好后,接下来就是pojo类和对应的映射文件Userinfo.hbm.xml
       在数据库中事先创建好了数据库和userinfo表,pojo类Userinfo类的属性一一对应userinfo表的字段。关键的是映射文件,映射文件中的配置如下
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping  PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><!-- 指定类到表的映射 --><class name="hibernate.pojo.Userinfo" table="userinfo"><!-- 主键id的生成机制:native将根据数据库自动生成,mysql是自增长方式 --><id name="id" column="id"><generator column="username"></property><property name="pwd" column="pwd"></property></class></hibernate-mapping>

       <class name="hibernate.pojo.Userinfo" table="userinfo">这句指明了类到表的映射;
        <id name="id" column="id">
<generator column="username"></property>以后的属性都按此进行映射。
        另外将此映射文件配置好后,还要记得将它配置到hb的核心控制文件hibernate.cfg.xml中。<session-factory></session-factory>的结束标签前加上<mapping resource="hibernate/pojo/Userinfo.hbm.xml"/>。这里还要注意将包名中的点改为斜线。

      4、获取hb中的Session对象的工具类HBUtils。取得根据hibernate.cfg.xml配置中的数据库的Session对象,类似于java.sql.connection对象;
 
public class HBUtils {private static SessionFactory sessionFactory;//取得根据hibernate.cfg.xml配置中的数据库的Session对象,类似于java.sql.connection对象public static Session getSession(){return sessionFactory.openSession();}//静态块,用于从hibernate.cfg.xml配置文件中初始化sessionFactorystatic {try{sessionFactory=new Configuration().configure().buildSessionFactory();}catch(Throwable ex){throw new ExceptionInInitializerError(ex);}}}


       5、现在就可以写Userinfo的操作类UserinfoDAO类了;
public class UserinfoDAO {//保存一个用户对象到数据库,保存成功后返回idpublic int saveUserinfo(Userinfo user){org.hibernate.Session session=HBUtils.getSession();//得到sessionorg.hibernate.Transaction tr=session.beginTransaction();tr.begin();//取得事物对象,开启事物session.save(user);//保存用户tr.commit();//提交事物session.close();return user.getId();}//从数据库中取得指定id的用户对象public Userinfo getUserinfoByID(int id){org.hibernate.Session session=HBUtils.getSession();//得到sessionObject object=session.get(hibernate.pojo.Userinfo.class,id);session.close();return (Userinfo)object;}}


     6、写一个测试类,进行测试即可,测试类代码
public class Test {/** * @param args */public static void main(String[] args) {Userinfo user=new Userinfo();user.setUsername("Hibernate测试1");user.setPwd("hb");UserinfoDAO userinfoDAO=new UserinfoDAO();int id=userinfoDAO.saveUserinfo(user);System.out.println("保存一个用户成功,保存的id是:"+id);Userinfo lookUser=userinfoDAO.getUserinfoByID(id);System.out.println("取得的用户是:"+lookUser.toString());}}



        与MVC比较有相似的,也有不同的,hibernate也要取得数据库的连接,写操作类对数据库进行操作,不过不同之处在与讲数据库的连接都放到配置文件里了,我们就不在需要自己写代码连接了,还有pojo类与数据库中的表的对应也放到了一个映射文件中了,而且,连slq语句都不用我们自己写了。以上就是我对hibernate的简单认识。
         





热点排行