java博客记录

导航

hibernate3-文件头,配置

 

核心配置文件hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

        "-//Hibernate/Hibernate Configuration DTD//EN"

        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

 

<hibernate-configuration>

    <session-factory>

         <!--方言-->

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

        <!--驱动-->

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

        <!--url-->

         <property name="hibernate.connection.url">jdbc:mysql:///828hibernate001</property>

        <!--用户名-->

         <property name="hibernate.connection.username">root</property>

        <!--密码-->

         <property name="hibernate.connection.password">root</property>

  <!--create-drop    create     update     validate-->

         <property name="hibernate.hbm2ddl.auto">update</property>

        <!--在控制台打印sql语句-->

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

        <!--在控制台格式化sql语句-->

        <property name="hibernate.format_sql">true</property>

 

<!--配置实体类的映射文件-->

<mapping resource="cn/offcn/entity/Person.hbm.xml"></mapping>

    </session-factory>

 

 

</hibernate-configuration>

 

 

表格映射文件hibernate.hbm.xml

  

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

 

 

<hibernate-mapping package="cn.offcn.entity">
<class name="Person" table="t_person">
<id name="id" column="p_id">
<!-- 主键的生成策略 -->
<generator class="native"></generator>
</id>
<property name="name" length="30" column="p_name" not-null="true" unique="true"></property>
<property name="gender" length="6" column="p_gender"></property>
<property name="age" column="p_age"></property>
<property name="birthday" type="date" column="p_birthday"></property>
</class>
</hibernate-mapping>

 

 

<property name="hibernate.hbm2ddl.auto"></property>自动创建表的四种策略:

在程序运行时会创建表,程序运行结束会删除表

#hibernate.hbm2ddl.auto create-drop   

在程序运行时会创建表,程序运行结束不删除表,程序再次运行时,先删表再创建表

#hibernate.hbm2ddl.auto create

如果程序在运行时没有表会自动创建表,程序运行结创不删除表。

#hibernate.hbm2ddl.auto update

在运程运行时,会检查实体类与表这之间的字段映射。如果发现实体类与表之间列不对应就会创数据库表中创建该字段

#hibernate.hbm2ddl.auto validate

 

 获取session的工具类
package cn.huaweinb.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {

private static SessionFactory sessionFactory;
static{
//1. 创建Configuration对象
Configuration cfg=new Configuration();
//2.加载hibernate的核心配置文件并创建SessionFactory对象
sessionFactory=cfg.configure().buildSessionFactory();
}

public static SessionFactory getSessionFactory(){
return sessionFactory;
}

public static Session getSession(){
return sessionFactory.openSession();
}

public static void close(Session session){
if(session!=null) session.close();
}
}

 

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>
<artifactId>hibernate001</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.13.0-GA</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.4</version>
</dependency>
</dependencies>




<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>

</project>

 

各种测试:


public class PersonTest {

@Test
public void addPersonTest() {
Session session = HibernateUtils.getSession();
Transaction transaction = session.beginTransaction();
for (int i=0;i<20;i++){
Person person = new Person("test", "女", 20, new Date());
session.save(person);
}
transaction.commit();
session.close();

}

@Test
public void deletePersonTest(){
Session session=null;
Transaction tx=null;
try {
session= HibernateUtils.getSession();
tx=session.beginTransaction();

Person person=new Person();
person.setId(2);
person.setName("aaa");
session.delete(person);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}
@Test
public void getPersonTest(){
Session session=null;
Transaction tx=null;
try {
session= HibernateUtils.getSession();
Person person=(Person)session.get(Person.class,1);
System.out.println(person);

} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}

@Test
public void updatePersonTest(){
Session session=null;
Transaction tx=null;
try {
session= HibernateUtils.getSession();
tx=session.beginTransaction();
Person person=(Person)session.get(Person.class,1);
person.setGender("男女");
session.update(person);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}
/*基于非主键,用sql*/
@Test
public void getSQLPersonsByIdTest(){
Session session=null;
Transaction tx=null;
int currentPage=2;
int pageSize=5;
try {
session= HibernateUtils.getSession();
tx=session.beginTransaction();
//SQL
String sql="select * from person";
SQLQuery sqlQuery = session.createSQLQuery(sql);
sqlQuery.addEntity(Person.class);
List<Person> personList =sqlQuery.list();
for (Person person : personList) {
System.out.println(person);
}
tx.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}
@Test
public void updateHqlPersonsByGenderTest(){
Session session=null;
Transaction tx=null;
int currentPage=2;
int pageSize=5;
try {
session= HibernateUtils.getSession();
tx=session.beginTransaction();
//HQL
String hql="update Person set age=age-2 where gender=:gender";
Query query = session.createQuery(hql);
query.setString("gender","男女");
query.executeUpdate();
tx.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}

/*根据非主键删除*/
@Test
public void deleteHqlPersonsByAgeTest(){
Session session=null;
Transaction tx=null;
int currentPage=2;
int pageSize=5;
try {
session= HibernateUtils.getSession();
tx=session.beginTransaction();
//HQL
String hql="delete from Person where age>:age";
Query query = session.createQuery(hql);
query.setInteger("age",20);
query.executeUpdate();
tx.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
}

}

 

posted on 2020-09-24 15:02  java博客记录  阅读(251)  评论(0)    收藏  举报