Hibernate应用 安装配置

 

Hibernate应用

一、引入

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

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

2、  解决办法

(1)       使用JDBC手工转换

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

Hibernate是JBOSS公司

二、安装配置

1、  下载地址http://www. Hibernate.org,本教程使用3.2.5。

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

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

可以在配置文件指定:数据库的URL、用户名、密码、JDBC驱动类、方言等。启动时Hibernate会在CLASSPATH里找这个配置文件。

       4、映射文件(hbm.xml,对象模型和关系模型的映射)。在/eg目录下有完整的hibernate示例。

 

 

映射<class name=”Java中的实体类的类名” table=”表名”>

              <!-java类中的属性映射成表的字段->

              <id name=”java类中作为主键的那个属性的名字” column=”表中列名”>

                     <generator class=”native”/>

</id>

<property name=”java类中普通属性的名字” column=”表中列名”/>      映射普通的JAVA属性成一列

</class>   将一个JAVA类映射成表

 

配置文件:

驱动、url、用户名、密码

方言

 

【1】       创建一个实体类User

【2】       将hibernate所需jar包构建到项目中(MySQL驱动、hibernate3.jar、lib/required/所有的jar文件、lib/jpa/jar文件)

【3】       配置文件(默认名字hibernate.cfg.xml        hibernate.properties              配置的基本信息:驱动、url、用户名、密码、方言、自动创建表格、将hibernate工作过程、及映射文件的位置)

<hibernate-configuration>

  <session-factory>

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

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

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

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

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

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

     <mapping resource="com/hbsi/demain/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=”xx1”属性

         <generator class="native"/>

     </id>

     <property name="name"/>

     <property name="birthday"/>

  </class>

</hibernate-mapping>

【5】       写java代码

Configuration cfg=new Configuration();

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

       //SessionFactory对象----相当于DriverManager

       SessionFactory sf=cfg.buildSessionFactory();

      

       //得Session对象

       Session s=sf.openSession();

       Transaction tx=s.beginTransaction();

       User user=new User();

       user.setName("Tom");

       user.setBirthday(new Date());

      

       //将user对象存入到数据库表中

       s.save(user);

       tx.commit();

    s.close();

可能出现问题:

(1)       驱动找不到

(2)       Unknown entity: 不认识User实体类。原因在配置文件中没有指明映射文件所在的位置<mapping resource=”com/hbsi/domain/User.hbm.xml”/>

(3)       Table”shopping.user” doesnot exist:表格不存在   

1>在mysql环境下建一个表

create table user(

id int auto_increment;

name varchar(20);

birthday date;);

2>在配置文件增加配置

       <property name=”hbm2ddl.auto”>create </property>

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

       create:在hibernate初始化时会创建表。在下一次运行时会删除前一个,创建一个新的

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

       validate:校验映射文件和数据库中的表是不是能够对应起来,若不能对应,不更新表,会报错。

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

Insert  s.save(user)

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

事务

Transaction tx=s.beginTransaction();

...

tx.commit();

数据库引擎:MyISAM不支持事务

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值