hibernate中實體類的三種狀態和crud操作
阿新 • • 發佈:2018-11-09
實體類
private int uid; private String name; private String age; private String address; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [uid=" + uid + ", name=" + name + ", age=" + age + ", address=" + address + "]"; }
操作資料庫的步驟
//1.讀取src下hibernate.cfg.xml配置檔案 Configuration cft = new Configuration(); Configuration configure = cft.configure(); //2.建立sessionFactory工廠 SessionFactory sessionFactory = configure.buildSessionFactory(); //3.開啟session回話 Session session = sessionFactory.openSession(); //4.建立事務 Transaction transaction = session.beginTransaction(); //5.具體的crud操作 //6.事務提交 transaction.commit(); //關閉會話工廠 sessionFactory.close();
三種狀態
- 瞬時態: 實體類無uid 既主鍵,且與session無關
User user1 = new User(); user1.setAddress("上海"); user1.setAge("21"); user1.setName("趙六"); //瞬時態的實體類saveOrUpdate執行插入操作 session.saveOrUpdate(user1); transaction.commit();
-
持久態: 實體類有uid 既主鍵,與session有關
User user2 = (User) session.get(User.class, 2); user2.setName("莉莉.改"); //持久態的實體類saveOrUpdate執行修改操作 session.saveOrUpdate(user2); transaction.commit();
-
託管態: 實體類有uid,與session無關
User user3 = new User(); user3.setUid(5); user3.setName("美美.改"); session.saveOrUpdate(user3); transaction.commit();
實體類的crud操作
- 查詢操作:查詢操作不需要提交事務
User user1 = (User) session.get(User.class, 1); System.out.println(user1); sessionFactory.close();
-
新增操作
User user = new User(); user.setAddress("杭州"); user.setAge("20"); user.setName("李四"); session.save(user); transaction.commit(); sessionFactory.close();
-
修改操作:先執行查詢操作
User user = (User) session.get(User.class, 3);//先執行查詢 user.setAddress("上海"); user.setName("Jack"); session.update(user); transaction.commit(); sessionFactory.close();
-
刪除操作:先執行查詢操作
User user = (User) session.get(User.class, 3); session.delete(user); transaction.commit(); sessionFactory.close();