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">
<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时,验证创建数据库表结构
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>
通过实体对象操作数据库:
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 对象
}