1、配置的source下的xml属性文件
里面关系映射视情况而定
<!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>
<!--配置方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 配置mysql驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 配置链接地址url -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/news</property>
<!-- 配置用户名username -->
<property name="hibernate.connection.username">root</property>
<!-- 配置密码 password -->
<property name="hibernate.connection.password">000</property>
<!--自动生成DDL -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 打印sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 配置关系映射 -->
<mapping class="model.News"/>
<mapping class="model.Comment"/>
</session-factory>
</hibernate-configuration>
2、配置的pox.xml文件
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>hidernate</groupId>
<artifactId>hidernate_work</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>hidernate_work Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- 单元测试。jar -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- hidernate jar 这是导包步骤 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.1.0.Final</version>
</dependency>
<!--mysql驱动 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
</dependencies>
<build>
<finalName>hidernate_work</finalName>
</build>
</project>
3、创建的实体类(News和Comment)
用来创建表中字段
1.News类
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
//创建的是实体类
@Entity
@Table(name="t_news")
public class News {
private int id;
private String author;
private String title;
private String pic;
@Id
@GenericGenerator(name="myid",strategy="increment") //主键生成策略
@GeneratedValue(generator="myid")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
}
2.Comment类
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
//写完实体类之后就马上把实体类配置到source下的xml映射中去
@Entity
@Table(name="t_comment")
public class Comment {
private int id;
private String name;
private String content;
public Comment(){}
public Comment(int id, String name, String content) {
this.id = id;
this.name = name;
this.content = content;
}
@Id
@GenericGenerator(name="increment",strategy="increment")
@GeneratedValue(generator="increment")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//如果需要修改name为com_name()
@Column(name="com_name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
4.1、没有封装时候的类
每次执行操作的时候都要注册服务,获取sessionFactory,获取session,关闭session。
import java.util.List;
import model.News;
import model.Comment;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.Test;
/*
*由于已经创建了News实体类,以及配置文件中完成了映射
*所以就可以在这里test测试
*/
public class HibernateTesr02 {
@Test
public void test(){
//注册服务
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure() // configures settings from hibernate.cfg.xml
.build();
//获取sessionFactory
SessionFactory sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
//获取session
Session session = sessionFactory.openSession();
//查询t_news表中的数据
List<News> list = session.createQuery("from News").list(); //等价于select * from t_news
System.out.println("总条数:"+list.size());
//关闭session
session.close();
}
@Test
public void testadd(){
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure() //confugures setting from hidernate.cfg.xml
.build();
//获取sessionFactory
SessionFactory sessionFactory = new MetadataSources(registry)
.buildMetadata().buildSessionFactory();
//获取session
Session session = sessionFactory.openSession();
//+++++++++++++++++++新增加++++++++++++++++++++++++++++
//实例化Comment
Comment comt = new Comment(2,"sansan","Hsy~");
//开启事务
session.beginTransaction();
session.save(comt); //执行保存操作
//提交事务
session.getTransaction().commit();
//+++++++++++++++++++++++++++++++++++++++++++++
//关闭session
session.close();
}
@Test
public void testUpdate(){
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure() //confugures setting from hidernate.cfg.xml
.build();
//获取sessionFactory
SessionFactory sessionFactory = new MetadataSources(registry)
.buildMetadata().buildSessionFactory();
//获取session
Session session = sessionFactory.openSession();
//++++++++++++修改+++++++++++++
Comment comt = new Comment(1,"sna","hader");
session.beginTransaction();
session.update(comt);
session.getTransaction().commit();
//关闭session
session.close();
}
@Test
public void testDel(){
//注册服务
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure()
.build(); //这个就是建造者模式
//下面就是获取sessionFactory
SessionFactory sessionFactory = new MetadataSources( registry )
.buildMetadata().buildSessionFactory();
//获取session
Session session = sessionFactory.openSession();
//++++++++++++删除++++
Comment comt = new Comment();
comt.setId(1);
session.beginTransaction();
session.delete(comt);
session.getTransaction().commit();
//关闭session
session.close();
}
}
4.2、封装之后的的操作
4.21封装的类(里面包括了注册服务,获取sessionFactory,获取session以及关闭)
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
//创建一个类封装起来
public class Hibernateutil {
private static SessionFactory sessionFactory = null;
static{
//注册服务
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure()
.build();
//获取sessionFactory
sessionFactory = new MetadataSources(registry)
.buildMetadata().buildSessionFactory();
}
//获取session
public static Session getSession(){
return sessionFactory.openSession();
}
//关闭session
public static void close(Session session){
if(session !=null){
session.close();
}
}
}
4.211增操作(封装之后)
import model.Comment;
import org.hibernate.Session;
import org.junit.Test;
import util.Hibernateutil;
public class Hidernateadd {
//下面添加数据,增删改操作要开启事务操作
@Test
public void add(){
Session session = null;
try {
session = Hibernateutil.getSession();
//下面要开启事务
session.beginTransaction();
Comment comt = new Comment(2,"添加第四个","添加会成功");
session.save(comt);
//提交事务
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
Hibernateutil.close(session);
}
}
}
4.212改操作
import model.Comment;
import org.hibernate.Session;
import org.junit.Test;
import util.Hibernateutil;
public class Hibernateupdate {
//下面是更新操作
@Test
public void update(){
Session session = null;
try {
session = Hibernateutil.getSession();
//开启事务
session.beginTransaction();
Comment comt = new Comment(13,"第13个添加","印度阿森纳");
session.update(comt);
} catch (Exception e) {
e.printStackTrace();
}finally{
Hibernateutil.close(session);
}
}
}
4.213删操作
import model.Comment;
import org.hibernate.Session;
import org.junit.Test;
import util.Hibernateutil;
public class Hibernatedel {
@Test
public void del(){
Session session = null;
try {
session = Hibernateutil.getSession();
//开启事务
session.beginTransaction();
Comment comt = new Comment();
comt.setId(12); //获取要删除数据的id号
session.delete(comt);
//提交事务
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
Hibernateutil.close(session);
}
}
}