hibernate阅读笔记(1)

最近在看尚学堂王勇老师讲的ssh部分,感觉很不错,在此感谢王勇老师。为了加深自己对hibernate的认识特作此笔记。

在学习hibernate的过程中首先感觉它的配置更多了应用也更加灵活了。

1、首先是hibernate.cfg.xml配置
在这个文件里面可以配置多个数据库(当然我没有应用过),下面的就是mysql数据库的配置内容:
<session-factory >
<!--选择数据库驱动-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--列出数据库所在的位置-->
<property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate_first</property>
<!--用户名-->
<property name="hibernate.connection.username">root</property>
<!--密码-->
<property name="hibernate.connection.password">rain</property>
<!--选择适配器,这样hibernate就会自己将hql转化为不同数据库对于的方言(sql)-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>

<mapping resource="com/dne/hibernate/User.hbm.xml"/>
</session-factory>

2、其次再看ORMaping
ORMaping其实就是将实体映射为数据库中的表
每个<class/>标签对应一个实体类
<id name="id">
<generator class="uuid"/>
</id>
<id>标签对应是表的主键,generator 是设置主键的生成策略,其中常用的生成策略有uuid、native、assign三种,其中uuid是hibernate自己生成的一个字符串,native可以自动匹配不同的数据库来生产主键,assign是手动分配。

<property name="name" column="user_name"/> cloumn是设置表的列名,如不显示设置则和name的名称相同。

3、工具类
在hibernate的应用中主要有三个工具类
(1)CreateDB.java,此类是根据配置文件映射生成表


package com.dne.managedb;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class CreateDB {

/**
* @author 刘景玉
* @createTime 2008-11-3
*/
public static void main(String[] args) {
//读取hibernate.cfg.xml 文件
Configuration cfg=new Configuration().configure();
//根据配置文件创建表
SchemaExport schemaExport=new SchemaExport(cfg);
schemaExport.create(true, true);

}

}


(2)HibernateUtils.java

由于SessionFactory的创建是比较耗时的因此在应用中一般只创建一次,又因为SessionFactory是线程安全的,估可以放心使用

package com.dne.managedb;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
*
* @author liujy
* @create time 2008-11-3
*/
public class HibernateUtils {
private static SessionFactory sessionFactory;

static {
try {
Configuration cfg = new Configuration().configure();

sessionFactory = cfg.buildSessionFactory();

} catch (Exception e) {
e.printStackTrace();

}

}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}
public static void CloseSession(Session session){
if(session!=null){
if(session.isOpen()){
session.close();
}
}

}
}

(3)Junit 测试类 它需要继承 TestCase
因为hibernate的测试不需要任何容器,并且是便于移植的,因此hibernate是轻量级的。
下面是测试类的主要方法体
public void testUser(){
Session session=null;
try{
//获取session
session=HibernateUtils.getSession();
//开启事务
session.beginTransaction();

User user=new User();
user.setCreateTime(new Date());
user.setExpireTime(new Date());
user.setName("刘景玉");

session.save(user);



//提交事务
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
//出现异常回滚事务
session.getTransaction().rollback();
}finally{
//关闭session
HibernateUtils.CloseSession(session);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值