hibernate.cfg.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
" http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<!-- 设置方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 能够在控制台显示sql语句,便于调试 -->
<property name="show_sql">true</property>
<!-- 让hibernate 自动建表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 这里是配置映射文件的路径 -->
<mapping resource="com/pojo/User.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
create 每次加载hibernate,重新创建数据库表结构
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构
validate 加载hibernate时,验证创建数据库表结构
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构
validate 加载hibernate时,验证创建数据库表结构
User.hbm.xml
<hibernate-mapping>
<class name="com.pojo.User" table="user">
<id name="id" column="user_id">
<!-- 主键生成策略 -->
<generator class="native"></generator>
</id>
<property name="name" column="user_name"></property> //name:实体对象属性名 column:表对应的列名
<property name="age" column="user_age"></property>
</class>
</hibernate-mapping>
实体对象xml详细说明:
<?xml version = "1.0" ?>
<!--
所有的XML映射文件都需要定义如下所示的DOCTYPE。
Hibernate会先在它的类路径(classptah)中搜索DTD文件。
-->
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
hibernate-mapping有几个可选的属性:
schema属性指明了这个映射的表所在的schema名称。
default-cascade属性指定了默认的级联风格 可取值有 none、save、update。
auto-import属性默认让我们在查询语言中可以使用非全限定名的类名 可取值有 true、false。
package属性指定一个包前缀。
-->
<hibernate-mapping schema = "schemaName" default-cascade = "none" auto-import = "true" package = "test" >
<!--用class元素来定义一个持久化类 -->
<class name = "People" table = "person" >
<!-- id元素定义了属性到数据库表主键字段的映射。-->
<id name = "id" >
<!-- 用来为该持久化类的实例生成唯一的标识 -->
<generator class = "native" />
</id>
<!-- discriminator识别器 是一种定义继承关系的映射方法-->
<discriminator column = "subclass" type = "character" />
<!-- property元素为类声明了一个持久化的,JavaBean风格的属性-->
<property name = "name" type = "string" >
<column name = "name" length = "64" not-null = "true" />
</property>
<property name = "sex" not-null = "true" update = "false" />
<!--多对一映射关系-->
<many-to-one name = "friend" column = "friend_id" update = "false" />
<!--设置关联关系-->
<set name = "friends" inverse = "true" order-by = "id" >
<key column = "friend_id" />
<!—一对多映射-->
<one-to-many class = "Cat" />
</set>
</class>
</hibernate-mapping>
实体对象xml详细说明:
<?xml version = "1.0" ?>
<!--
所有的XML映射文件都需要定义如下所示的DOCTYPE。
Hibernate会先在它的类路径(classptah)中搜索DTD文件。
-->
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
hibernate-mapping有几个可选的属性:
schema属性指明了这个映射的表所在的schema名称。
default-cascade属性指定了默认的级联风格 可取值有 none、save、update。
auto-import属性默认让我们在查询语言中可以使用非全限定名的类名 可取值有 true、false。
package属性指定一个包前缀。
-->
<hibernate-mapping schema = "schemaName" default-cascade = "none" auto-import = "true" package = "test" >
<!--用class元素来定义一个持久化类 -->
<class name = "People" table = "person" >
<!-- id元素定义了属性到数据库表主键字段的映射。-->
<id name = "id" >
<!-- 用来为该持久化类的实例生成唯一的标识 -->
<generator class = "native" />
</id>
<!-- discriminator识别器 是一种定义继承关系的映射方法-->
<discriminator column = "subclass" type = "character" />
<!-- property元素为类声明了一个持久化的,JavaBean风格的属性-->
<property name = "name" type = "string" >
<column name = "name" length = "64" not-null = "true" />
</property>
<property name = "sex" not-null = "true" update = "false" />
<!--多对一映射关系-->
<many-to-one name = "friend" column = "friend_id" update = "false" />
<!--设置关联关系-->
<set name = "friends" inverse = "true" order-by = "id" >
<key column = "friend_id" />
<!—一对多映射-->
<one-to-many class = "Cat" />
</set>
</class>
</hibernate-mapping>
通过实体对象操作数据库:
Configuration config=new Configuration().configure();//读取全局配置文件
SessionFactory factory= config.buildSessionFactory();// 获得sessionFactory
Session session=factory.openSession(); // 获得一个session 对象
Transaction tran = session.beginTransaction(); 得到事务对象
Student stu = new Student();
stu.setStuname("rong");
stu.setStuclass(12); //设置一个实体对象
try {
session.save(stu); //=将对象插入数据库
tran.commit(); //事务提交
} catch (Exception e) {
tran.rollback(); //事务异常回滚
} finally {
session.close(); //关闭session 对象
}