以下是封装了增删改的类,如下写法,不能同时调用增删、或者增改、删改数据。因为会话共享,并且每个方法内都不能关闭session,否则对后续方法调用会有影响。
package bean529; import hibernate.factory.HibernateSessionFactory; import org.hibernate.Session; import org.hibernate.Transaction; import bean.Customer; public class CustomerManager { Session session = HibernateSessionFactory.getSession(); Transaction tran = session.beginTransaction(); //增加记录 public void addCustomer(String customerID,String name,String phone){ /**定义事务开始**/ //注解实体类 Customer dept = new Customer(); dept.setCustomerID(customerID); dept.setName(name); dept.setPhone(phone); session.save(dept); //提交事务 tran.commit(); } //删除记录,通过id public void delCustomer(String customerID) { /**首先查找待删除记录,通过id**/ Customer dept = (Customer)session.get(Customer.class, "1003"); session.delete(dept); tran.commit(); } //修改记录,通过id先查找,后修改 public void updateCustomer(String customerID,String name,String phone) { //首先查找待修改记录,通过id Customer dept = (Customer)session.get(Customer.class, "1003"); dept.setName(name); dept.setPhone(phone); session.saveOrUpdate(dept); tran.commit(); } //测试 public static void main(String[] args) { CustomerManager manager = new CustomerManager(); //manager.addCustomer("1003","we", "31231"); //manager.delCustomer("1003"); manager.updateCustomer("1003", "姓名被修改", "号码被修改"); } }
总结:如需要在控制台显示查询,可在配置文件hibernate.cfg.xml中配置属性show_sql,值为true。后续应该考虑批处理查询、同时进行增删改查等问题。那么基本的增删改查就算完美了。在更新方法中有用到查询。可参考。之前就知道纠结于servlet实现各种功能,发现臃肿而且还不好维护,现在才安心研究ssh框架,感觉之前的时间真是浪费了一部分,不过也没什么,至少自己理解现在的框架,更加能够清晰的认识深层次的东西。
<!-- 配置控制台视图,显示查询内容 --> <property name="show_sql">true</property>
加了这句之后,保存数据时,控制台: