Hibernate配置

1.部署

  将Hibernate解压后lib下required的所有jar包导入工程中,其余文件夹的jar包可根据实际需要导入。

 

2.在src下创建hibernate.cfg.xml配置文件

 hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC  
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=goodsmessage</property>
        <property name="hibernate.connection.username">mike</property>
        <property name="hibernate.connection.password">mike</property>
        <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
        <mapping resource="conn/User.hbm.xml"/>
        <mapping resource="conn/Goods.hbm.xml"/>
        <mapping resource="conn/Orders.hbm.xml"/>
        <mapping resource="conn/Cart.hbm.xml"/>
        <mapping resource="conn/SuperType.hbm.xml"/>
        <mapping resource="conn/SubType.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

3.创建数据库表所对应的类,并编写或使用工具生成对应的hbm.xml文件

 User.java 

package conn;

public class User {
	private String username;
	private String pwd;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

}

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>
    <class name="conn.User" table="users">
        <id name="username" type="java.lang.String">
            <column name="username" />
        <generator class="assigned"/>
        </id>
        <property name="pwd" type="java.lang.String">
            <column name="pwd" />
        </property>
    </class>
</hibernate-mapping>

<generator class="assigned"/>指定了主键生成方式。

   native:由数据库对id赋值,Hibernate根据数据库适配器的定义,自动采用identity、hilo、sequence的其中一种作为主键生成方式

   hilo:用过hi/lo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态

   seqhilo:与hilo类似,通过hi/lo算法实现的之间生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle

   increment:主键按数值顺序递增

   identity:采用数据为提供的主键生成机制,如SQL Server、MySQL中的自增主键生成机制

   sequence:采用数据库提供的sequence机制生成主键,如Oracle Sequence

   uuid.hex:由Hibernate基于128位唯一值产生算法生成十六进制数值作为主键,在最大限度上保证产生的id的唯一性

   foreign:使用外部表的字段作为主键

4.应用

//加载配置文件
Configurationconfiguration = new Configuration().configure();

//向Hibernate注册相关服务
@SuppressWarnings("deprecation")
ServiceRegistryserviceRegistry= newServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();

//创建会话工厂
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

Session session= null;

//一个典型的事务应使用try{}catch{}finally{}
try{
        //打开会话
        session = factory.openSession();

       //开始事务
        session.beginTransaction();

        /*
           处理事务...
        */

        //提交事务
        session.getTransaction().commit();         
}catch(Exception e){
        e.printStackTrace();
        //事务回滚
        session.getTransaction().rollback();
}finally{
        if(session != null){
            if(session.isOpen()){
                 //关闭session
                 session.close();
            }
        }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章