日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate基于单表curd

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate基于单表curd 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 1. hibernate框架
    • 2. 配置文件實體mapper和hibernate.cfg.xml
    • 3. 操作單表增刪改查

1. hibernate框架

數據持久層的框架 功能定位:專門用來訪問數據庫,對數據庫進行增刪改查操作 Hibernate是一個ORM框架 MyBatis MyBatisPlus、JPA(springdata jpa) ORM:Object Relational Mapping(對象關系映射)特點 1. 上手較難 2. 靈活度低 3. 全自動(不寫sql語句操作數據庫)

2. 配置文件實體mapper和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 5driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/mydatabaseMysql 8.0.15driver=com.mysql.cj.jdbc.Driverurl=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. 通過配置文件 獲取 sessionFactorySessionFactory sessionFactory = config.buildSessionFactory();// 3. 通過session工廠獲取sessionSession 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 existsSystem.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 {// 關閉sessionsession.close();// 關閉session工廠sessionFactory.close();}// hibernate中的緩存System.out.println(stuObj);}}

總結

以上是生活随笔為你收集整理的hibernate基于单表curd的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。