添加所需 jar 包

hibernate-distribution-3.6.10.Final 下的 hibernate.jar;
- \hibernate-distribution-3.6.10.Final\lib\required下的所有 jar 包。
 
编写 hibernate.cfg.xml (hibernate 配置文件) 配置 hibernate 如何连接到数据库
- PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 - "http://www.hibernate.org/dtd/hibernate-configuration- 3.0.dtd" >
 oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@localhost:1521:xe hr hr org.hibernate.dialect.Oracle10g Dialect true - name="hibernate.cache.use_query_cache">true
 net.sf.ehcache.hibernate.EhCacheRegionFactory 10 2 2 20 thread true 
配置映射文件
在java实体类和数据库表之间建立对应关系,来简化增删改查操作对象(java实体类) 关 系(关系型数据库) 映射(对应关系) ORM(object relationship mapping)
对实体类的要求:
1. 要有无参构造方法
2. 实体类不能加 final
3. 建议实现 Serializable 接口(以后二级缓存会用到)
映射文件(格式为 xml):
习惯上格式为 实体类名.hbm.xml
hibernate 主键生成方式:
- increment 取 id 的***值+1
 - sequence 默认找 hibernate_sequence `
 ` - 如果要自定义序列名:
 - 自定义序列名
 - assigned 由应用程序指定 id
 - identity 例如 sqlserver, mysql 需要使用这种方式生成主键值
 - native (会根据方言选择是用 sequence 或是 identity)
 
例:
- -- 数据库
 - create table person
 - (
 - id number(10) primary key, name varchar2(10),
 - age number(2),
 - gender varchar2(4),
 - city varchar2(10)
 - );
 
- //实体类
 - public class Person {
 - private Integer id;
 - private String name;
 - private Integer age;
 - private String gender;
 - }
 
使用 hibernate 的 api 进行 CRUD
session.save(实体对象); 执行 insert 来保存数据
session.delete(实体对象); 执行 delete 来删除数据
要先查询、后删除
session.get(实体类型, 实体 id 主键值) ; 执行 select 来查询单个实体
session.update(实体对象);
在 session 打开的过程中, 对实体的修改,***事务提交时,hibernate 都会将这些修改同步到数据库,如果实体对象的数据与数据库数据不一致,就称此数据变”脏”了。hibernate 会进行脏数据检查,事务提交时,如果数据变”脏”了,hibernate才会执行 update 查询多个实体。
session.createQuery(hql 语句).list(); 返回一个 List 集合
例:
- import org.hibernate.SessionFactory;
 - import org.hibernate.cfg.Configuration;
 - public static void main(String[] args) {
 - // 1. 读取配置文件
 - Configuration cfg = new Configuration().configure();
 - // 2. 创建SessionFactory
 - SessionFactory sf = cfg.buildSessionFactory();
 - // 3. Session <-> Connection (类似于)
 - Session session = sf.openSession(); // 打开新session, 类似 于打开一个数据库连接
 - // 4. 进行实体类的增删改查
 - Person p = new Person();
 - p.setName("王五"); p.setAge(19);
 - p.setGender("男");
 - // 开始事务
 - session.beginTransaction();
 - // 参数即为实体对象
 - session.save(p);
 - // 提交事务 rollback()回滚事务
 - session.getTransaction().commit();
 - // 5. 释放资源
 - session.close();
 - sf.close();
 - }
 
掌握 HibernateUtil 的工具类
理解同一个线程要使用同一个 session 对象的实现方式
- import org.hibernate.HibernateException;
 - import org.hibernate.Session;
 - import org.hibernate.SessionFactory;
 - import org.hibernate.cfg.Configuration;
 - public class HibernateUtil {
 - private static Configuration cfg;
 - private static SessionFactory sf;
 - static {
 - try {
 - cfg = new Configuration().configure(); sf = cfg.buildSessionFactory();
 - } catch (HibernateException e) {
 - e.printStackTrace();
 - }
 - }
 - private static ThreadLocal
 threadLocal = new ThreadLocal (); - /**
 - * 同一个线程要使用同一个session对象
 - *
 - * @return
 - */
 - public static Session getSession() {
 - Session session = threadLocal.get();
 - if (session == null) {
 - // ***次调用,线程中还没有session,这时创建新的session对象
 - session = sf.openSession();
 - threadLocal.set(session);
 - }
 - return session;
 - }
 - public static void closeSession() {
 - Session session = threadLocal.get();
 - if (session != null) {
 - session.close(); // 关闭session
 - threadLocal.remove(); // 并从当前线程清除此session
 - }
 - }
 - }
 
使用 jUnit 来进行单元测试
它是一种单元测试工具junit类中的方法都可以作为程序入口点, 要添加@Test注解到方法上
【本文是专栏作者张勇波的原创文章,转载请通过获取作者授权】
                当前标题:1Hibernate的基本配置
                
                转载来于:http://www.csdahua.cn/qtweb/news42/344492.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网