Hibernate mapping

来源:互联网 发布:微信公众网页授权域名 编辑:程序博客网 时间:2024/05/16 16:48

Hibernate应用详解

一.

<class name=”java 中的实体类的类名”table=”二维关系表”>

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

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

主键怎么生成的

<generator class=”native”/>

</id>

普通属性

<property name=”java类中普通属性的名字”column=”表中的值”>

</class>

将一个java类映射成表

配置文件

驱动,url,用户名,密码,方言

二.

(1)      创建一个实体类User

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

Mysql驱动 Hibernate3.jar;lib/required/所有的文件;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="connection.url">jdbc:mysql:///deom</property>

      

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

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

       <property name="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">--column可省略

           <generator class="native"/>--声明主键

       </id>

       <property name="name"/>

       <property name="brithday"/>

    </class>

 

   

 

</hibernate-mapping>

(5)      写java代码

     package com.hbsi.test;

 

import java.util.Date;

 

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

 

import com.hbsi.domain.User;

 

public class TestHibernate {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generatedmethod stub

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

       Configuration cfg=new Configuration();

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

       //sessionFactiory对象---DeriverManager

       SessionFactory sf=cfg.buildSessionFactory();

   

       //得到session对象

       Session s=sf.openSession();

       //开启事务

       Transaction tx=s.beginTransaction();

       //注意session和web中的session没有任何联系

       User user=new  User();

       user.setName("Tom");

       user.setBrithday(new Date());

       s.save(user);

       tx.commit();

       s.close();

       System.out.println("end");

 

    }

 

}

 

可能出现的问题

(1)      驱动找不到

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

(3)      Table” demo.user” doesnotexist:

A.手动建立表

Create table user(id in taut_increment);

Name varchar(20);

Birthday date);

B.让hibernate建表,在配置文件中增加配置;

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

以下几种方式;

Create-drop:hiberbate初始化创建表格,程序结束时将删除表,实际应用中不

合理

Create:hiberbate初始化创建表格。下一次创建时删除原有的,建立新的

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

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

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

         S.save(user);

加上下一句话:

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

事务处理

Transaction tx=s.beginTransaction();

…..

Tx.commit();

数据库引擎MyIsam,INNODBN不支持事务


原创粉丝点击