hibernate学习-HibernateDemo

时间:2023-03-08 22:20:48

上篇文章我们讲述了eclipse安装hibernate插件的过程,这篇文章我们来做第一个HibernateDemo。

1)、hibernate的jar开发包的下载,官网下载地址:http://hibernate.org/orm/downloads/,解压后我们可以在hibernate-release-5.2.3.Final\lib\required文件夹下找到hibernate开发用到的jar包。

2)、新建一个Java Project项目,导入jar包(记得把MySQL的jar包也加进去),在src根目录下新建一个***.cfg.xml文件(安装插件成功后可以快速新建),然后我们进行文件配置,代码如下:

<session-factory>
<!-- 连接数据库的基本信息 -->
<property name="connection.username">root</property><!-- MySQL数据库的用户名 -->
<property name="connection.password">root</property><!-- MySQL数据库的密码 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- MySQL驱动 -->
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property><!--MySQL的URL,localhost(本地地址,可以省略)也可以改成远程服务器地址 --> <!-- 配置hibernate的基本信息 -->
<!-- hibernate所使用的基本方言 -->
<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <!-- 执行操作时是否在控制台打印 -->
<property name="show_sql">true</property> <!-- 是否对sql格式化 -->
<property name="format_sql">true</property> <!-- 指定自动生成数据表的策略 -->
<property name="hbm2ddl.auto">update</property>
<!-- 指定关联的.hbm.xml文件,这一步应该生成java beans后再配置 -->
<mapping resource="com/hibernateHello/News.hbm.xml"/> </session-factory>

3)、定义JavaBeans(对应你的数据表),

package com.hibernateHello;

import java.sql.Date;

public class News {
private Integer id;
private String author;
private String title;
private Date date; public Integer getId() {
return id;
} public void setId(Integer 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 Date getDate() {
return date;
} public void setDate(Date date) {
this.date = date;
} public News() {
// TODO Auto-generated constructor stub
} public News(String author, String title, Date date) {
// super();
this.author = author;
this.title = title;
this.date = date;
} }

4)、快捷生成JavaBeans对应的News.hbm.xml文件(也是插件提供),具体操作如下图所示。

hibernate学习-HibernateDemo

生成的代码:

<hibernate-mapping>
<class name="com.hibernateHello.News" table="NEWS">
<!-- id 主键 -->
<id name="id" type="java.lang.Integer">
<column name="ID" />
<!-- 指定主键生成方式 native:使用数据库本地方式 -->
<generator class="native" />
</id>
<property name="author" type="java.lang.String">
<column name="AUTHOR" />
</property>
<property name="title" type="java.lang.String">
<column name="TITLE" />
</property>
<property name="date" type="java.sql.Date">
<column name="DATE" />
</property>
</class>
</hibernate-mapping>

5)、 ***.cfg.xml指定关联的**.hbm.xml文件(*千万不要忘记)

6)、通过JUnit测试,代码如下:

package com.hibernateHello;

import java.sql.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before; public class Test {
private Configuration configuration;
private StandardServiceRegistry registry;
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction; @Before
public void first() {
// 创建Configuration对象:对应hibernate的基本配置信息和对象关系映射信息
configuration = new Configuration().configure(); //创建一个对象StandardServiceRegistry,configure("你的***.cfg.xml"),默认为hibernate.cfg.xml
registry = new StandardServiceRegistryBuilder().configure().build(); // 创建会话工厂对象
sessionFactory = configuration.buildSessionFactory(registry); // 创建一个Session对象
session = sessionFactory.openSession(); // 开启事物
transaction = session.beginTransaction();
}

/*

* saveNews()添加数据

* getNews()和loadNews()查找数据
* updateNews()修改数据
* deleteNews()删除数据

*/

@org.junit.Test

public void saveNews() {
News news = new News("63va", "fe", new Date( new java.util.Date().getTime()));
session.save(news);
}
  
@org.junit.Test
public void getNews() {
News a1 = session.get(News.class, 1);
System.out.println(a1); } @org.junit.Test
public void loadNews() {
News a1 = session.load(News.class, 1);
System.out.println(a1); } @org.junit.Test
public void updateNews() {
News a1 = session.get(News.class, 2);
a1.setAuthor("ccc");
session.update(a1);
System.out.println(a1); } @org.junit.Test
public void deleteNews() {
News a1 = session.get(News.class, 4);
session.delete(a1);
// System.out.println(a1); } @After
public void finsh() {
// 提交事物
transaction.commit();
//关闭session
session.close();
// 关闭SessionFactory对象
sessionFactory.close();
} }

7)、运行效果如图所示:

hibernate学习-HibernateDemo