(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