您的位置:首页 > 其它

Hibernate操作步骤

2011-12-05 19:44 274 查看
(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>

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

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

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

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

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

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

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

<mappingresource="com/hbsi/domain/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

(4)映射文件---

User---- User.hbm.xml

<hibernate-mapping

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

<classname="User" table="user"> -----说明实体类怎样映射成表

<idname="id">

<generatorclass="native"/>

</id>

<propertyname="name"/>

<propertyname="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实体类。原因在配置文件没有指明映射文件所在位置

<mappingresource="com/hbsi/domain/User.hbm.xml"/>

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

create table user(

id int auto_increment;

name varchar(20);

birthday date;

);

在配置文件增加配置:

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

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

create:在hibernate初始化时会创建表格。

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

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

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

insert s.save(user)

<propertyname="show_sql">true</property>

事务

Transaction tx=s.beginTransaction();

...

tx.commit();

MyISAM

InnoDB
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: