Hibernate环境的搭建

 

Hibernate环境的搭建

一、    引入

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

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

(2)解决办法

1、 使用JDBC手工转换

2、 使用ORM(Object Relation 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

        SessionFactory sf=cfg.buildSessionFactory();

        //通过sessionFactory得session对象

        Session session=sf.openSession();

        Transaction tx=session.beginTransaction();

       

        User user=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:

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

        在配置文件中增加配置:

<property name="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();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值