Hibernate原理与应用

来源:互联网 发布:穿越火线网络环境异常 编辑:程序博客网 时间:2024/05/16 04:06

Hibernate原理与应用

主要内容

1、  引入

2、  安装配置

 

一、引入

(1)模型不匹配(阻抗不匹配)

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

(2)解决办法

1、  使用JDBC手工转换

2、  使用ORM(ObjectRelation Mapping对象关系映射)框架来解决,主流的ORM框架有Hibernate、TopLink、OJB。

二、安装配置

(1)    下载地址http://www.hibernate.org

(2)    将下载目录/hibernate3.jar和/lib下的hibernamte运行时必须的包加入classpath中:antlr.jar,cglib.jar,asm.jar,commons-collections.jar,commons-logging.jar,jta.jar,dom4j.jar

基本操作总结:

1)  创建一个实体类User

2)  将hibernate所需jar构建到项目中

MySQL的驱动 hibernate3.jar  lib/required/所有jar文件  lib/jpa/jar文件

3)  配置文件hibernate.cfg.xml 或 hibernate.properties

配置的基本信息 驱动 url 用户名 密码 方言(可选 一般能够检测到)自动创建表格  将hibernate工作过成中产生的sql语句显示出来以及映射文件的位置

<hibernate-configuration>

    <session-factory>

       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

       <property name="hibernate.connection.url">jdbc:mysql:///demo</property>

       <property name="hibernate.connection.username">root</property>

       <property name="hibernate.connection.password">1234</property>

       <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

       <property name="hibernate.hbm2ddl.auto">create</property>

       <property name="hibernate.show_sql">true</property>

       <mapping resource="com/hbsi/domain/User.hbm.xml"/><!-- 指定映射文件的位置 -->

    </session-factory>

</hibernate-configuration>

4)       映射文件----将实体类映射成二维关系表

命名规范User----User.hbm.xml

<hibernate-mapping

    package="com.hbsi.domain">---指定Java实体类的包名

    <class name="User" table="user">----说明实体类怎样映射成二维表

       <id name="id"column="id">

           <generator class="native"/><!-- native主键的生成器  自动增长 -->

       </id>

       <property name="name"not-null="true"/><!-- 映射普通的java属性 -->

       <property name="birthday"not-null="true"/>

    </class>

</hibernate-mapping>

5) 写Java代码完成对象的保存

public static void main(String[] args) {

    // TODO Auto-generated method stub

    //使用Hibernate完成将对象存入表中。

    Configuration cfg=new Configuration();

    cfg.configure();//用来完成Hibernate的初始化--读取配置文件

    //sessionFactory对象---DriverManager

     SessionFactorysf=cfg.buildSessionFactory();

     //通过sessionFactory得session对象

    Session session=sf.openSession();

     Transactiontx=session.beginTransaction();

   

     Useruser=new User();

    user.setName("Tom");

     user.setBirthday(new Date());

    

    session.save(user);

    tx.commit();

     session.close();

     System.out.println("end");

}

 

}

可能出现的问题

(1)  驱动找不到

(2)      Unknown entity:不认识User实体类。原因在配置文件没有指定映射文件的位置

<mapping resource=”com/hbsi/domain/User.hbm.xml”/>

                   (3)Table”demo.user”doesnot exist:

                   Createtable user(id int auto_inctrment;name varchar(20); birthday date;)

                   在配置文件中增加配置:

<propertyname="hibernate.hbm2ddl.auto">create</property>

Create-drop:在hibernate进行初始化时会创建表,程序运行结束时表格就会被删除

Create:在hibernate初始化时会创建表格。并且会在下一次运行时将原来的删除在建新的。

Update:只是根据映射文件去和数据库中的表对应起来,如果不一致就更新表

Validate:校验映射文件和数据库中的表是不是能够对应起来,不能对应报错,实际中常用。

(4)      表格建好了,但表格中没有记录

Insert  session.save(user)

<property name=”show_sql”>true</property>

可能是事务回滚

Transaction tx=Session.beginTransaction();

Tx.commit();

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 贴双眼皮眼皮松怎么办 dpf灯亮了怎么办 60岁社保没交满怎么办 老公素质太差怎么办 耿彦波退休了太原怎么办 宫腔镜三天后同房了怎么办 开关失灵关不了怎么办 灯的开关关不掉怎么办? 身上毛孔粗大怎么办呀 脸被牙膏灼伤怎么办 wifi要登录认证怎么办 本科没有选导师怎么办 预授权撤销了怎么办 软件连不上网怎么办 手机屏幕出现有道词典怎么办 孩子总觉得没错怎么办 孩子动手打父母怎么办 初中零基础高中怎么办 弟媳妇爱上我怎么办 孩子考不好家长怎么办 小高考不过关怎么办 小高考不过考生怎么办 江苏不过怎么办小高考 大小脸拍婚纱照怎么办 被大学开除学籍怎么办 大专不给你退学怎么办 大专退学后档案怎么办 多单位同时录取怎么办 毕业学校改名了怎么办 改名后所有档案怎么办 大学学校改名毕业证怎么办 洗碗下水道堵了怎么办 美国打朝鲜丹东怎么办 欧洲通票行程不够怎么办 飞机安检被拦下东西怎么办 火车站丢了东西怎么办 高铁乘务近视怎么办 高铁乘务员怀孕怎么办 小超市生意不好怎么办 企业数字证书过期了怎么办 盆栽植物烂根怎么办