非常详细的步骤:第一个Hibernate程序

一、编写工具

Myeclipse2017,Oracle(MySQL也可),PL/SQL

二、编写过程

1.创建一个web project


2.导入jar包

Hibernate的编写需要以下的jar包,导入到WebRoot下的lib文件夹内


再将Oracle或者MySQL的所需的jar包加入上述路径下,如下


3.在Oracle数据库中创建一个表


这里用的是语句创建,可以用表创建这里省略

4.根据所创建表创建实体类,属性名称与列名一一对应。



5.创建hibernate的核心配置文件(hibernate.cfg.xml):用来配置数据库连接以及hibernate运行时所需要的各个属性的值.

<!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="dialect">org.hibernate.dialect.OracleDialect</property>
<!--Mysql<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> -->
<!-- 数据库驱动 -->
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<!-- 连接数据库的url -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- 连接数据库的用户名 -->
<property name="connection.username">system</property>
<!-- 连接数据库的密码 -->
<property name="connection.password">456852</property>
<!-- 显示SQL语句 -->
<property name="show_sql">true</property>
<!-- 格式化SQL语句 -->
<property name="format_sql">true</property>
<!-- 用来配置hbm配置文件 -->
<mapping resource="com/vo/Person.hbm.xml"/>
</session-factory>

</hibernate-configuration>

如果不知道Oracle或者MySql方言,可以在Myeclipse中shift+ctrl+t弹出Open type,然后输入*oracle*dialect(*mysql*dialect),选中如下图



在制定方言位置粘贴如上图蓝色框选中部分,MySQL类似位置

6.创建映射文件:让hibernate知道实体类映射哪个数据库的哪个表的哪个字段

<?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="com.vo"><!-- 包名 -->
<!-- name是类名,table是数据库中的表名 -->
<class name="Person" table="person">
<!-- name是Person类中的属性,column是数据库中表的字段名 -->
<id name="person_id" column="person_id">
<!-- 外部控制主键生成 -->
<generator class="assigned"/> 
</id>
<!-- 使用property标签来映射 -->
<property name="person_name" column="person_name" type="string" />
</class>

</hibernate-mapping>

这里注意<generator class="assigned"/> 这里的class有多种形式,想详细了解的可以https://www.cnblogs.com/hoobey/p/5508992.html

我们比较常用的是assigned(外部程序生成)、native(主键生成策略)等。

完成3、4、5步之后的程序布局如下


7.编码测试,建立一个TestHibernate如下


并且引入JUINT,如下




package com.test;
import javax.websocket.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
import com.vo.Person;
public class TestHibernate {
private static SessionFactory sessionFactory;
private static org.hibernate.Session session;
private static Transaction transaction;
public static void before() {
// 创建配置对象
Configuration config = new Configuration().configure();
// 创建服务注册对象
ServiceRegistry service = new ServiceRegistryBuilder().applySettings(config.getProperties())
.buildServiceRegistry();
// 创建会话工厂对象
sessionFactory = config.buildSessionFactory(service);
// 创建会话对象
session = sessionFactory.openSession();
// 开启事务
transaction = session.beginTransaction();
}
public static void after() {
transaction.commit(); // 提交事务
session.close(); // 关闭会话
sessionFactory.close(); // 关闭会话工厂
}
@Test
public void insertTest() {
TestHibernate.before();
String person_id = "1514010624";
String person_name = "谢星";
Person person = new Person(person_id, person_name);
session.save(person);
transaction.commit();
TestHibernate.after();
}
@Test
public void updateTest() {
TestHibernate.before();
String person_id = "1514010624";
String person_name = "谢魁星";
Person person = new Person(person_id, person_name);
session.update(person);
TestHibernate.after();
}
@Test
public void selectTest() {
TestHibernate.before();
Person person = (Person) session.get(Person.class, "1514010624");
// Person person = (Person) session.load(Person.class,"1514010624");
System.out.println("id:" + person.getPerson_id() + ",name:" + person.getPerson_name());
TestHibernate.after();
}
@Test
public void deleteTest() {
TestHibernate.before();
String person_id = "1514010624";
String person_name = "谢魁星";
Person person = new Person(person_id, person_name);
session.delete(person);
TestHibernate.after();
}
}

因为SessionFactory sessionFactory;Session session;Transaction transaction;这三个类在增删改查的时候经常性的使用,所以在写的时候将它们放在同一个方法中进行开关的控制,增加了代码的重用度。

运行时候可以在加上了@Test的方法下选中方法名,右键点击,选中Run As下的JUnti Test如下运行


三、注意事项

1.实体类Person和数据库中的person表中的属性名一定要一致,否则会出现报错的现象。

2.Person.hbm.xml和hibernate.cfg.xml地址位置一定要对应,尽量复制粘贴不要手打,小方法:ctrl按住,用鼠标移动到地址边会出现下划线,点击地址会移动到准确位置




















































阅读更多
换一批

没有更多推荐了,返回首页