1.首先要引入我们要用到的jar包
hibernate3.jar核心 + required 必须引入的(6个) + jpa 目录 + 数据库驱动包
如下图所示:
引入jar包的时候遇到了一些问题,一开始安装在了src下新建的lib文件夹下,但是后来发现不能够使用,需要建立一个新的
User Library,将自己所需的jar包add上,之后在项目上右键Build path---add library,将之前自建的library导入。
2.为了与数据库表建立映射关系,编写一个对象User.java
package sunrui;
public class User {
private int id;
private String username;
private String password;
private String cellphone;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getCellphone() {
return cellphone;
}
public void setCellphone(String cellphone) {
this.cellphone = cellphone;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3.编写对象映射->User.hbm.xml。
这一部分是在网上找的编写代码,在project>etc里没有看见,里面只找到了.cfg.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping package="sunrui">
<!--类名为User,表名也为User-->
<class name="User" table="m">
<!--主键映射,属性名为id,列名也为id-->
<id name="id" column="id">
<!--根据底层数据库主键自动增长-->
<generator class="native"/>
</id>
<!--非主键映射,属性和列名一一对应-->
<property name="username" column="username"/>
<property name="cellphone" column="cellphone"/>
<property name="password" column="password"/>
</class>
</hibernate-mapping>
需要注意的是class name和table。一个是自己编写的类名,一个是自己想要建立到数据库中表的名字,表的名字可以随便写,但要和后面的代码对应好,如果写错类名会找不到文件
这一部分并没有什么困难的地方,问题出现一般就是没有对应好类名,另外就是id是主键列,generator根据底层数据库指定生成方法,如果主键不自增就会报错。
4.配置Hibernate核心配置文件(hibernate.cfg.xml)
这个需要创建在src目录下,注意不要写到自己自建的包中,hbm.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.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/abc</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">sunrui1314</property>
<!-- 数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 其他相关配置 -->
<!-- 显示hibernate在运行时候执行的sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化sql -->
<property name="hibernate.format_sql">true</property>
<!-- 建表 -->
<property name="hibernate.hbm2ddl.auto">create</property>
<!--加载所有映射-->
<mapping resource="sunrui/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
在我们下载的hiberate文件目录下他原本是这个样子滴
这一部分需要注意的是
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>//这里是数据库驱动
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/abc</property>//这里是数据库连接,你的连接名和建的数据库名,我们这里是abc
<property name="hibernate.connection.username">root</property>//这里是数据库用户名
<property name="hibernate.connection.password">sunrui1314</property>//这里密码千万不要写错
还有加载全部映射的时候,mapping resource后面要接的是你自己建的包名+cfg.xml文件名,如果写错了会找不到文件相应目录无法成功执行
5.大功告成开始测试,建立测试类sr.java
package sunrui;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Sr {
public static void main(String[] args) {
//创建对象
User m = new User();
m.setPassword("666");
m.setCellphone("18846420216");
m.setUsername("ifyou");
//获取加载配置管理类
Configuration configuration = new Configuration();
//不给参数就默认加载hibernate.cfg.xml文件,
configuration.configure();
//创建Session工厂对象
SessionFactory factory = configuration.buildSessionFactory();
//得到Session对象
Session session = factory.openSession();
//使用Hibernate操作数据库,都要开启事务,得到事务对象
Transaction transaction = session.getTransaction();
//开启事务
transaction.begin();
//把对象添加到数据库中
session.save(m);
//提交事务
transaction.commit();
//关闭Session
session.close();
}
}
这里的主要问题也就是类名不要写错!类名就是与数据库建立映射关系的User,还有就是相应的import不要忘记加,一般来说代码打上之后会有提示,选择相对的import包就完成了,最后是不要忘记关闭session,session做任何的操作,如果没有显示的调用commit()方法,都不会清理缓存、执行相应的SQL、提交事务。
6.结果显示
可以看到m表已经被建立在数据库中了