Hibernate配置

 

1,关系模型、对象模型

rs结果集对象

if(rs.next()){

      user.setId(rs.getInt(1));

      user.setName(rs.getString(2));

      ...  

}

关系模型转换成了对象模型

User user=new User();

user.setId(2);

user.setName("xxx");

String sql="insert into user values(?,?,?)";

ps=con.preparedStatement(sql);

ps.setInt(1,user.getId());

ps.setString(2,user.getName());

ps.executeUpdate();

对象模型转换成关系模型

2,hbm.xml的设置

<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/所有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="connection.url">jdbc:mysql:///demo</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">

                 <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());

          

s.save(user);

tx.commit();

s.close();

可能出现问题:

(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_increment;

name varchar(20);

birthday date;

);

在配置文件增加配置:

<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

InnoDB    

public final class HibernateUtil{

      private static SessionFactory sessionFactory;

      private HibernateUtil(){

      }

      static{

           Configuration cfg=new Configuration();

           cfg.configure();//读取配置文件

           sessionFactory=cfg.buildSessionFactory();

      }

      public static SessionFactory getSessionFactory(){

           return sessionFactory();

      }

      public static Session getSession(){

           return sessionFactory.openSession();

      }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值