hibernate主要配置文件整合
结构图:
实体类映射文件,名称格式:XX.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="org.hibernate.test.exception" >
<!-- name填写实体类的路径 table填写表名 -->
<class name="com.wqk.entity.User" table="user">
<!-- id填写实体类主键字段 table填写表主键字段 -->
<id name="id" column="id">
<!-- native代表自增长依赖于表 -->
<generator class="native"></generator>
</id>
<property name="username" column="username"></property>
<property name="password" column="password"></property>
<!-- 映射文件结束 -->
</class>
</hibernate-mapping>
hibernate核心配置文件:名称:hibernate.cfg.xml(不可改)
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- jdbc操作数据库配置文件 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/test01</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<!-- 数据库连接池初始化时创建的connection个数 -->
<property name="connection.pool_size">2</property>
<!-- 数据库类型,官方称之为sql方言,这里使用mysql,不要自己写从官网api文档上cp -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 执行sql的时候是否打印sql语句,这里使用true,代表打印 -->
<property name="show_sql">true</property>
<!-- 这个配置是说:当数据库不存在时是否创建:DDL,这里我不允许它自己创建,so,修改为update -->
<property name="hbm2ddl.auto">update</property>
<!-- 这里是指向实体类的映射文件,注意:是实体类的映射文件,不是实体类 -->
<!-- 刚刚找了一下。发现是属性写错了,拷贝的时候也要注意 -->
<mapping resource="com/wqk/entity/User.hbm.xml"/>
<!-- hibernate核心配置文件完成 -->
</session-factory>
</hibernate-configuration>
基本操作:增删改查
package com.wqk.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.wqk.entity.User;
public class Test01 {
//注解@Test相当于main方法
@Test
public void show()
{
Configuration con = new Configuration();
//加载核心配置文件
con.configure();
//获取session工厂
SessionFactory sf=con.buildSessionFactory();
//打开session
Session session = sf.openSession();
//测试查询get(实体类.class, id)
User user=(User) session.get(User.class, 1);
System.out.println(user.getUsername());
session.close();
}
//测试增删改
@Test
public void insert()
{
Configuration con = new Configuration();
con.configure();
SessionFactory sf = con.buildSessionFactory();
Session session = sf.openSession();
//做增删改时要求使用事物
//获取事物
Transaction tc = session.beginTransaction();
//开启事物
tc.begin();
User user=new User();
user.setUsername("张迷");
user.setPassword("123456");
session.save( user );
//提交
tc.commit();
//关闭
sf.close();
//新增成功
}
//测试增删改
@Test
public void delete()
{
Configuration con = new Configuration();
con.configure();
SessionFactory sf = con.buildSessionFactory();
Session session = sf.openSession();
//做增删改时要求使用事物
//获取事物
Transaction tc = session.beginTransaction();
//开启事物
tc.begin();
//先查询
User user=(User) session.get(User.class, 1);
session.delete(user);
//提交
tc.commit();
//关闭
sf.close();
//删除成功
}
//测试增删改
@Test
public void update()
{
Configuration con = new Configuration();
con.configure();
SessionFactory sf = con.buildSessionFactory();
Session session = sf.openSession();
//做增删改时要求使用事物
//获取事物
Transaction tc = session.beginTransaction();
//开启事物
tc.begin();
//依然先查询
User user=(User) session.get(User.class, 2);
user.setUsername("我爱你");
session.update(user);
//提交
tc.commit();
//关闭
sf.close();
//修改成功
}
//hibernate基础到此结束
}