Hibernate:HIbernate配置详解-HelloWorld

hibernate介绍:html

     Hibernate是一个开源的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java程序员能够为所欲为的使用对象编程思惟来操纵数据库java

它不只提供了从java类到数据库表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操做数据库,Hibernate能够大大减小mysql

操做数据库的工做量。另外Hibernate能够利用代理模式简化载入类的过程,这将大大减小利用Hql从数据库提取数据的代码编写量,从而节约开发时间程序员

和开发成本Hibernate能够和多种web服务器或者应用服务器良好集成,现在已经支持几乎全部的流行数据库服务器。web

 

2. Hibernate原理:sql

     Hibernate技术本质上是一个提供数据库服务的中间件。Hibernate的工做原理,他是利用数据库以及其余一些配置文件如:hibernate.cfg.xml,数据库

xxx.hbm.xml等来为应用程序提供数据持久化服务的。编程

  1.   Configuration来读取hibernate.cfg.xml文件
  2.   使用Configuration对象建立SessionFactory
  3.   用SessionFactory来打开一个Session
  4.   建立事务Transaction
  5.   begin事务
  6.   使用Session进行数据库操做
  7.   关闭或回滚事务
  8.   关闭Session

 

3. 配置Hibernate 声明:我使用的是JDK1.7,Hibernate3.6.0服务器

  3.1 导入相关Jar包:Hibernate模式不仅是本身内部实现,一样也导入了许多外部的jar包,下面是Hibernate3.6.0框架的基本jar包session

    我使用的是mysql数据库,能够根据本身使用的数据库添加相关驱动Jar包

 

  3.2 先建立一个User实体

 1 package com.a_helloworld;  2  3 public class User {  4  5 private int id;  6 private String name;  7 public int getId() {  8 return id;  9  } 10 public void setId(int id) { 11 this.id = id; 12  } 13 public String getName() { 14 return name; 15  } 16 public void setName(String name) { 17 this.name = name; 18  } 19 20  @Override 21 public String toString() { 22 return "User [id=" + id + ", name=" + name + "]"; 23  } 24 25 26 }

 

 

  3.3 配置User实体在数据库表的映射user.hbm.xml

    

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.a_helloworld"> <!-- 属性table 表示在数据库中的表名 --> <class name="User" table="user_1" > <id name="id" column="id" type="int"> <!-- 值native表示会根据数据库来建立不一样的主键生成策略 --> <generator class="native"></generator> </id> <property name="name" column="name" type="string"></property> </class> </hibernate-mapping>

 

 

  3.4 简单配置hibernate.cfg.xml配置文件,这个文件名能够随便修改(xxx.cfg.xml),可是没多大意义,通常不建议修改。配置的信息以下:

    

 1 <!DOCTYPE hibernate-configuration PUBLIC  2  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  3  "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 4 
 5 <hibernate-configuration>
 6     <session-factory name="foo">
 7     
 8         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
 9         <property name="connection.username">root</property>
10         <property name="connection.password">123456</property>
11         <property name="connection.url">jdbc:mysql:///user</property>
12         
13         <!-- 要根据本身使用的数据库来配置相对应的属性,也成方言,针对不一样数据库 14  关于怎么配置能够查看HibernateAPI 15          -->
16         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
17         
18         <!-- Hibernate 創建的SQL語句会显示在控制台 -->
19         <property name="hibernate.show_sql">true</property>
20         
21         <!-- 选择方案,经常使用值:validate | update | create | create-drop -->
22         <property name="hbm2ddl.auto">update</property>
23         
24         <mapping resource="com/a_helloworld/user.hbm.xml"/> -- 导入实体映射配置,程序每次启动都会自动检索
25         
26     </session-factory>
27 </hibernate-configuration>

 

以上Hibernate简单配置已经基本完成,能够添加一个测试类来测试是否成功

    

package com.a_helloworld; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.Session; import org.junit.Test; public class Demo { private static SessionFactory sf = new Configuration()//             .configure("hibernate.cfg.xml")//  .buildSessionFactory(); @Test public void addUser(){ Session session = null; Transaction tran = null; try{ session = sf.openSession(); // 建立一个Session
            tran = session.beginTransaction(); //开启事务
 User user = new User(); user.setName("张三"); session.save(user); tran.commit();//事务提交
        }catch(Exception e){ tran.rollback(); //事务回滚
            throw(e); }finally{ session.close(); //关闭session
 } } @Test public void getUser(){ Session session = null; Transaction tran = null; try{ session = sf.openSession(); // 建立一个Session
            tran = session.beginTransaction(); //开启事务
            
            /*这里指明你要得到哪一个类型,Hibernate会根据类名查询映射配置文件到数据库查询哪张表,根据指定 * id查询实体,经过反射机制建立实体对象 */ User user = (User) session.get(User.class, 1); //执行查询,get
 tran.commit();//事务提交
        }catch(Exception e){ tran.rollback(); //事务回滚
            throw(e); }finally{ session.close(); //关闭session
 } } @Test public void updateUser(){ Session session = null; Transaction tran = null; try{ session = sf.openSession(); // 建立一个Session
            tran = session.beginTransaction(); //开启事务
 User user = new User(); user.setId(1);//这里指定了要更新的数据id为1
            user.setName("李四");// 把名字 “张三” 修改成 “李四” 
            session.update(user);//执行更新 
 tran.commit();//事务提交
        }catch(Exception e){ tran.rollback(); //事务回滚
            throw(e); }finally{ session.close(); //关闭session
 } } @Test public void deleteUser(){ Session session = null; Transaction tran = null; try{ session = sf.openSession(); // 建立一个Session
            tran = session.beginTransaction(); //开启事务
 User user = new User(); user.setId(1);//这里指定了要更新的数据id为1
            session.delete(user); //执行删除
 tran.commit();//事务提交
        }catch(Exception e){ tran.rollback(); //事务回滚
            throw(e); }finally{ session.close(); //关闭session
 } } }

 

 

 

 

  如需转载请说明出处:http://www.cnblogs.com/gudu1/p/6879990.html 

相关文章
相关标签/搜索