hibernate的概念

来源:互联网 发布:板楼和塔楼的区别 知乎 编辑:程序博客网 时间:2024/06/10 18:46

      模式不匹配:

       Java面向对象语言,对象模型,其主要概念有:继承,关联,多态等,数据库是关系模型,其主要概念有:表主键、外键等;

       解决办法:

1、          使用JDBC手工转化

2、          使用ORM(Object Relation Mapping)框架来解决,主流的ORM框架有Hibernate(JBOSS),TopLink(Ore),OJB(ap)

配置文件hibernate.cfg.xml和hibernate.properties.properties,XML和properties两种,这两个文件的作用一样,提供一个即可,推荐XML格式,下载目录/etc下是示例配置文件。

可以在配置文件指定:

数据库的URL、用户名,密码、JDBC驱动类,方言等。

启动时Hibernate会在CLASSPATH里找这个配置文件。

映射文件(hbm.xml,对象模式和关系模式的映射)。在/eg墨绿下有完整的hibernate示例。

 

开发流程:

1、          由Domain object->mapping->db

2、          由DB开始,用工具生成mapping和Domain object。

3、          由映射文件开始

Domian object限制

1、          默认的构造方法(必须的)

2、          有无意义的标示符id(主键)

3、          非final的,对懒加载有影响

Domian Java Object(User)

              public class User{

                            private int id;

                     private String name;

                     private Date birthDay;

                     //getter setter…

}

基本概念和CURD:

1、          hbm.xml

<?xml version=”1.0”? >

<hibernate-mapping=”cn.itcast.domian”>

<class name=”User” table=”user”>

       <id name=”id”>

              <generator class=” native”/>

       </id>

<property name=”name”>

<property name=”birthday”>

</class>

</hibernate-mapping>

1、初始化代码(只做一次)

       Configuration cfg=new Configuration();

       cfg.configure(“config.cfg.xml”);

       也可以通过cfg.setProperty设置属性。

       SessionFactory sessionFactory=cfg.buildSessionFactory()

2、          模式代码

Session session=null;Transactory tx=null;

try{

       session=sessionFactory.openSession();

       tx=session.beginTransaction();

       //…你的代码save,delete,update,get…

       tx.commit();

       }catch(Exception e){

              if(tx !=null)tx.rollback();throw e;

}finally(

              if(session != null)session.close();

}

}

Session的几个主要的方法:

1、Save,persist保存数据,persist在事物外不会产生insert语句。

2、delete,删除对象

3、update,更新对象如果数据库中没有记录,会出现异常。

4、get,根据ID查,会立即访问数据库

 5、Load,根据ID查(返回的是代理,不会立即访问数据库)

6、saveOrUpdate,merge(根据ID和version的值来确定是save或update),调用merge你的对象还是托管的。

7、lock(把对象变成持久对象,但不会同步对象的状态)。

原创粉丝点击