hibernateは単一のテーブルカードに基づいています

1.休止状態のフレームワーク

数据持久层的框架
功能定位:专门用来访问数据库,对数据库进行增删改查操作
Hibernate是一个ORM框架 MyBatis   MyBatisPlus、JPA(springdata jpa)
ORM:Object Relational Mapping(对象关系映射)

特点
1.	上手较难
2.	灵活度低
3.	全自动(不写sql语句操作数据库)

2.構成ファイルエンティティマッパーとhibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
          "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-mapping>

	<!-- 配置stu info 实体类与表的映射关系 -->
	<!-- 类的全路径 和 表名 -->
    <class name="cn.bitqian.entity.StuInfo" table="stu_info">
    	<!-- 主键  -->
    	<!-- name 为属性 -->
    	<!-- id 为列 -->
    	<id name="sid" column="id">
    		<!-- 配置主键生成策略 -->
    		<generator class="native"></generator>
    	</id>
   
   		<!-- 可以配置列的长度 -->
    	<property name="name" column="name"></property>
    	<property name="birthday" column="birth_day"></property>
    	
    </class>
    
<!--     <class name="cn.bitqian.entity.User" table="users2">
    	<id name="userId" column="user_id">
    		主键生成策略
    		<generator class="native"></generator>
    	</id>
    	
    	实体属性与列的映射关系!
    	<property name="userName" column="user_name"></property>
    	<property name="userPasswrod" column="user_password"></property>
    	<property name="userGender" column="user_gender"></property>
    	<property name="userAddress" column="user_address"></property>
    	<property name="registerDate" column="register_date"></property>
    </class> -->

</hibernate-mapping>
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>


    <session-factory>
     
		<!-- mysql 5.x 版本sql 连接配置 -->
     	<property name="connection.url">jdbc:mysql://localhost:3306/ssh_study</property>
     	<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
     	<property name="connection.username">root</property>
     	<property name="connection.password">123456</property>
     	
     	<!-- 数据库方言 mysql -->
     	<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
     	
     	<!-- 在命令执行时是否显示sql语句 -->
     	<property name="show_sql">true</property>
     	<property name="format_sql">true</property>
     	
     	<!-- 用于更新表的变化 -->
     	<property name="hbm2ddl.auto">update</property>
     	
     	<!-- 引用实体类 与 数据库表的 映射文件 -->
     	<mapping resource="cn/bitqian/entity/stuInfo.hbm.xml"/>
     
    	<!-- 引用user映射文件 -->
    	<mapping resource="cn/bitqian/entity/user.hbm.xml"/>
    </session-factory>

</hibernate-configuration>

ドライバーパッケージノート

Mysql 5
	driver=com.mysql.jdbc.Driver
	url=jdbc:mysql://localhost:3306/mydatabase


Mysql 8.0.15
	driver=com.mysql.cj.jdbc.Driver
	url=jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai

&需转译成&amp;

3.操作リストを追加、削除、変更、確認します

  • エンティティクラス
package cn.bitqian.entity;

import java.io.Serializable;
import java.util.Date;

public class StuInfo implements Serializable {
    
    
	
	/**
	 * 唯一 serial id
	 * 用于序列化和返序列化的校验
	 */
	private static final long serialVersionUID = -3784274218883718429L;
	
	
	private Integer sid;
	private String name;
	private Date birthday;
	// 省略set/get
}
  • SessionFactory
package cn.bitqian.dao;

import java.io.Serializable;
import java.util.Date;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
//import org.hibernate.dialect.MySQL5InnoDBDialect;

import cn.bitqian.entity.StuInfo;


/**
 * get / load distinct
 * single table curd 
 * @author echo lovely
 *
 */
public class Test1 {
    
    
	
	public static void main(String[] args) {
    
    
		
		test1();

	}
	
	/**
	 * stuInfo 表测试
	 */
	static void test1() {
    
    
		// 1. 读取配置文件
		Configuration config = new Configuration().configure();
		
		// 2. 通过配置文件 获取 sessionFactory
		SessionFactory sessionFactory = config.buildSessionFactory();
		
		// 3. 通过session工厂获取session
		Session session = sessionFactory.openSession();
		
		// 4. 开启事务
		session.beginTransaction();
		
		Object stuObj = null;
		
		// 数据库操作
		try {
    
    
			
			// 新增
			/*StuInfo stu = new StuInfo();
			stu.setName("jack");
			stu.setBirthday(new Date());
			
			// 返回新增主键值
			Serializable primaryValue = session.save(stu);
			System.out.println(primaryValue);
			*/
			
			// 修改
			/*StuInfo stu = new StuInfo();
			stu.setSid(1);
			stu.setName("rose");
			stu.setBirthday(new Date());
			
			session.update(stu);

			System.out.println("修改成功...");*/
			
			// 删除
			/*StuInfo stu = new StuInfo();
			stu.setSid(1);
			session.delete(stu);*/
			
			// 单个查询
			// load 懒加载 和 get的区别
			
			// load 查询 延时加载
			System.out.println("load 查询前");
			stuObj = session.load(StuInfo.class, 1);
			System.out.println("load 查询后");
			if (stuObj != null) {
    
    
				System.out.println("使用对象");
				StuInfo stu = (StuInfo) stuObj;
				System.out.println(stuObj + "\n转型后的对象: \n" + stu);
				
			}
			
			System.out.println("null stu by load:");
			// load查询不存在的
			// org.hibernate.ObjectNotFoundException: No row with the given identifier exists
			System.out.println(session.load(StuInfo.class, 2));
			
			// get 查询 即时加载
			/*System.out.println("get 查询前:");
			stuObj = session.get(StuInfo.class, 1);
			
			System.out.println("get 查询后:");*/
			
			/**
			 * 延时加载和即时加载的区别:
			 * 	相同点:
			 * 		1. 都能查询单条数据,在Session关闭后不能再查询
			 *      2. 都存在缓存
			 *  不同点:
			 *  	1. 即时加载不管数据是否存在,都会返回结果,返回null或者数据。
			 *  		而延时load加载查不到数据时报错。
			 *      2. 延时load加载只能在 你使用数据时,发送查询请求
			 *  	
			 */
			
			// 提交事务
			session.getTransaction().commit();
		} catch (Exception e) {
    
    
			session.getTransaction().rollback();
			e.printStackTrace();
		} finally {
    
    
			// 关闭session
			session.close();
			// 关闭session工厂
			sessionFactory.close();
		}
		
		// hibernate中的缓存
		System.out.println(stuObj);
		
	}

}

おすすめ

転載: blog.csdn.net/qq_44783283/article/details/108503520