hibernate基础篇

    xiaoxiao2025-10-26  3

    Hibernate是什么

          Hibernate是一个轻量级的ORMapping框架

          ORMapping原理(Object Relational Mapping)就是把对象里面的数据和数据库里面的数据,按照一定的规则进行映射的过程。

              

                            

    ORMapping基本对应规则:

     

    1:类跟表相对应

    2:类的属性跟表的字段相对应

    3:类的实例与表中具体的一条记录相对应

     

    Hibernate的实现方式

                             

    Hibernate解决的问题:

        通过上图我们也能发现,Hibernate主要用来实现Java对象和表之间的映射,除此之外还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。

    Hibernate的目标是对于开发者通常的数据持久化相关的编程任务中解放出来。   

     

    Hibernate可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。

                            

    hibernate优点:

    1、封装了jdbc,简化了很多重复性代码。

    2、简化了DAO层编码工作,使开发更对象化了。

    3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。

    4、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。所以说它是一个轻量级框架。

    下面结合应用实例帮助大家理解:

     

    实体类:

    [java]  view plain  copy  print ? import java.util.Date;   public class User {          private String id;       private String username;       private String userpassword;       private String createTime;       private String expireTime;          public String getId() {           return id;       }       public void setId(String id) {           this.id = id;       }       public String getUsername() {           return username;       }       public void setUsername(String name) {           this.username = name;       }       public String getUserpassword() {           return userpassword;       }       public void setUserpassword(String password) {           this.userpassword = password;       }       public String getCreateTime() {           return createTime;       }       public void setCreateTime(String createTime) {           this.createTime = createTime;       }       public String getExpireTime() {           return expireTime;       }       public void setExpireTime(String expireTime) {           this.expireTime = expireTime;       }   }  

    创建hibernate映射文件User.hbm.xml

    映射文件告诉Hibernate它应该访问数据库里面的哪个表(table)和应该使用表里面的哪些字段(column)。

    因为这里只有一个Class ---User和一个Table --- t_user,你只需要建立一个映射文件---User.hbm.xml,来对应User类和t_user表之间的关系。

    [html]  view plain  copy  print ? <hibernate-mapping package="com.bjpowernode.hibernate">       <class name="User" table="t_user">           <id name="id">               <generator class="uuid"></generator>           </id>           <property name="username"></property>           <property name="userpassword"></property>           <property name="createTime"></property>           <property name="expireTime"></property>       </class>          </hibernate-mapping>  

    配置Hibernate描述文件hibernate.cfg.xml

     

    Hibernate描述文件可以是一个properties或xml文件,其中最重要的是定义数据库的连接。我这里列出的是一个XML格式的hibernate.cfg.xml描述文件。

    [html]  view plain  copy  print ? <hibernate-configuration>       <session-factory >           <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>           <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>           <property name="hibernate.connection.username">root</property>           <property name="hibernate.connection.password">hejingyuan</property>           <!-- 方言 -->           <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>           <property name="hibernate.show.sql">true</property>           <property name="hibernate.show.format_sql">true</property>           <!-- 指定User的映射文件 -->           <mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>       </session-factory>   </hibernate-configuration>  

    生成表方法

    [java]  view plain  copy  print ? /**   * 将hbm生成ddl   * @author Administrator   *   */   public class ExportDB {          public static void main(String[] args) {           //默认读取hibernate.cfg.xml文件           Configuration cfg = new Configuration().configure();           SchemaExport export = new SchemaExport(cfg);           export.create(truetrue);       }   }  

    添加用户

    [java]  view plain  copy  print ? public static void main(String[] args) {           //读取hibernate.cfg.xml文件--缺省默认文件,如果只new的话,会读取porperties           Configuration cfg=new Configuration().configure();                      //建立SessionFactory,线程安全的,最好一个数据库创建一次           SessionFactory factory=cfg.buildSessionFactory();                      //取得Session,真正要用的时候才去关联connection,这个connection与我们之前学的不同,称为持久化管理器           Session session=null;           try{               session=factory.openSession();               //开启事务               session.beginTransaction();               User user=new User();               user.setUsername("张三");               user.setUserpassword("123");               user.setCreateTime(new Date().toString());               user.setExpireTime(new Date().toString());                              //保存User对象               session.save(user);               //提交事务               session.getTransaction().commit();                          }catch(Exception e){               e.printStackTrace();               //回滚事务               session.getTransaction().rollback();           }finally{               if(session != null){                   if(session.isOpen()){                       //关闭session                       session.close();                   }               }           }                  }  

    总结:

          千里之行始于足下,这篇文章仅是迈向Hibernate大道的一个起点。以上只是简单介绍了Hibernate解决的问题,其实Hibernate就是一个转换器,完成对象实例与数据库表的转换,对JDBC访问数据库的代码进行封装,简化了数据访问层繁琐的重复性代码。

    转载请注明原文地址: https://ju.6miu.com/read-1303542.html
    最新回复(0)