学习hibernate下载了最新最稳定的版本,配置完了一运行才发现爆了很多异常,网上一查才发现是版本的问题,Hibernate更新的很快。直接进入正题:
项目目录:
1,创建项目,然后导入hibernate的jar包:
右键项目:Build Path-->Configure Build Path--> Libraries-->选择右边的Add External JARs-->找到自己存放hibernate源文件的位置hibernate-release-5.3.7.Final-->lib-->required-->全部jar包选上-->apply-->apply and close.
还是上面同样的方法找到本地电脑中的mysql的jar包,导入进项目中
下面解释下hibernate的一些jar包:
antlr-2.7.7.jar ->Hibernate利用它从HQL到SQL的转换。
byte-buddy01.8.17.jar ->基于动态类型的超类名称来随机生成类名
dom4j-2.1.1.jar 解析XML配置文件和XML映射文件
hibernate-commons-annotations-5.0.4.Final.jar. Hibernate注解包
hibernate-core-5.3.7.Final.jar Hibernate 核心包
jandex-2.0.5.Final.jar 用来索引Anotation的
javassist-3.23.1-GA.jar Hibernate用它来实现PO字节码的动态生成
javax.persistence-api-2.2.jar 持久化api
jboss-logging-3.3.2.Final.jar 日志服务通用库
jboss-transaction-api_1.2_spec-1.1.1.Final.jar JTA规范包
2,在项目src目录下新增一个hibernate的核心文件,文件名:hibernate.cfg.xml
<!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. -->
<!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="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">你数据库的密码</property>
<!--hibernate可选项 -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="format_sql">true</property>
<property name="show_sql">true</property>
<!--hbm文件 -->
<mapping resource="com/siggy/pojo/Score.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3,创建Score类在com.siggy.pojo包下,代码如下:
package com.siggy.pojo;
public class Score {
private int Id;
private String stuId;
//学生编号
private String subjectId;
//学科编号
private String result;
//成绩
public int getId() {return Id;}
public void setId(int id) {Id = id;}
public String getStuId() {return stuId;}
public void setStuId(String stuId) {this.stuId = stuId;}
public String getSubjectId() {return subjectId;}
public void setSubjectId(String subjectId) {this.subjectId = subjectId;}
public String getResult() {return result;}
public void setResult(String result) {this.result = result;}
}
4,创建Score类的Score.hbm.xml文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-12-3 11:54:01 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.siggy.pojo.Score" table="SCORE">
<id name="Id" type="int">
<column name="ID" />
<generator class="assigned" />
</id>
<property name="stuId" type="java.lang.String">
<column name="STUID" />
</property>
<property name="subjectId" type="java.lang.String">
<column name="SUBJECTID" />
</property>
<property name="result" type="java.lang.String">
<column name="RESULT" />
</property>
</class>
</hibernate-mapping>
5,编写测试类Hibernate:
package com.siggy.pojo;
import java.util.EnumSet;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.tool.schema.TargetType;
import org.junit.Test;
public class Hibernate {
@Test public void testCreateDB(){
//注意这里的写法跟hibernate4.x的写法有很大的不同
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
SchemaExport schemaExport = new SchemaExport();
schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata);
}
}
6,运行程序,控制台输出:
7,进入mysql: 输入指令:/usr/local/mysql/bin/mysql -u root -p 然后输入密码, 密码不显示的。
进入hibernate数据库: use hibernate;
查看表:desc score;
至此,hibernate自动创建表就完成了。继续学习!!!! 加油,没有做不到的事