一个简单的hibernate示例
1、创建一个实体类,相当于创建表,因为hibernate可以根据实体类自动生成一个对应的表。
package learn1;
//实体类
public class admin {
//hibernate里面要有一个具有唯一值的属性(相当于表的主键)
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2、创建实体类映射文件,命名为“实体类名.hbm.xml”
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 对象映射 -->
<!-- package可写可不写,不写实体类的路径就要写全路径 -->
<hibernate-mapping package="learn1">
<!-- name:实体类路径,table:数据库表的名称 -->
<class name="admin" table="t_admin">
<!-- id:实体类里面id名称,column:生成的表的字段-->
<id name="id" column="id">
<!--根据底层数据库主键自动增长-->
<generator class="native"/>
</id>
<!--非主键映射-->
<property name="name" column="name"></property>
<property name="password" column="password"></property>
</class>
<!-- 可以配置多个对象的映射 -->
</hibernate-mapping>
3、创建核心配置文件,命名为hibernate.cfg.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节点代表一个数据库 -->
<session-factory>
<!-- 第一部分,配置数据库相关信息-->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///user?serverTimezone=UTC</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">你的密码</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>
<!-- hibernate创建表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--第三部分,加载所有映射-->
<mapping resource="learn1/admin.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4、创建一个测试文件
package learn1;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class adminTest {
public static void main(String[] args) {
//1、加载主配置文件,即hibernate.cfg.xml
Configuration cfg=new Configuration();
cfg.configure();
//2、创建session-factory对象,,在这个过程根据映射关系把表创建
SessionFactory sessionfactory= cfg.buildSessionFactory();
//3、创建session对象,类似于连接数据库
Session session=sessionfactory.openSession();
//4、开启事务
Transaction tx=session.beginTransaction();
//5、crud操作
//添加一条记录
admin ad1=new admin();
ad1.setName("tom");
ad1.setPassword("1234");
session.save(ad1);
//6、提交事务
tx.commit();
//7、关闭资源
session.close();
sessionfactory.close();
}
}
运行结果:
可以看到表已经创建成功并向表中添加了一条记录
注意:表可以根据实体类自动创建,但数据库不能,还有如果发生错误可以根据控制台显示的错误信息来解决。