简单易懂的hibernate例子

    技术2022-05-11  42

    数据库文件:myproject.sql

    /* MySQL Data Transfer Source Host: localhost Source Database: myproject Target Host: localhost Target Database: myproject Date: 2009/8/26 17:23:12 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for users -- ---------------------------- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `password` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- ---------------------------- -- Records -- ---------------------------- INSERT INTO `users` VALUES ('34', '测试4', '123456', 'ok@ujs.edu.cn'); INSERT INTO `users` VALUES ('35', '测试5', '123456', 'ok@ujs.edu.cn'); INSERT INTO `users` VALUES ('36', '测试6', '123456', 'ok@ujs.edu.cn'); INSERT INTO `users` VALUES ('37', '测试7', '123456', 'ok@ujs.edu.cn'); INSERT INTO `users` VALUES ('38', '测试8', '123456', 'ok@ujs.edu.cn');

     

    实体类:User.java package usermap; public class User { private int id; private String name; private String password; private String email; public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } 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; } public int getId() { return id; } public void setId(int id) { this.id = id; } } hibernate类:HibernateBase.java package usermap; import org.hibernate.*; import org.hibernate.cfg.*; import java.util.*; import java.io.IOException; import java.io.PrintWriter; public abstract class HibernateBase { protected SessionFactory sessionFactory;// 会话工厂,用于创建会话 protected Session session;// hibernate会话 protected Transaction transaction; // hiberante事务 public HibernateBase() throws HibernateException { this.initHibernate(); } // 帮助方法 protected void initHibernate() throws HibernateException { // 装载配置,构造SessionFactory对象 sessionFactory = new Configuration().configure().buildSessionFactory(); } /** *开始一个hibernate事务 */ protected void beginTransaction() throws HibernateException { session = sessionFactory.openSession(); transaction = session.beginTransaction(); } /** *结束一个hibernate事务。 */ protected void endTransaction(boolean commit) throws HibernateException { if (commit) { transaction.commit(); } else { // 如果是只读的操作,不需要commit这个事务。 transaction.rollback(); } session.close();} } bean类:UserBean.java package usermap; import org.hibernate.*; import org.hibernate.cfg.*; import java.util.*; /** * 和course相关的业务逻辑 */ public class UserBean extends HibernateBase { public UserBean() throws HibernateException { super(); } /** * 增加一个Course */ public void addUser(User user) throws HibernateException { beginTransaction(); session.save(user); endTransaction(true); } /** * 查询系统中所有的Course,返回的是包含有Course持久对象的Iterator。 */ public Iterator getAllUsers() throws HibernateException { String queryString = "from User u order by u desc"; beginTransaction(); Query query = session.createQuery(queryString); Iterator it = query.iterate(); return it; } /** * 删除给定ID的course */ public void deleteUser(String id) throws HibernateException { beginTransaction(); User user = (User) session.load(User.class, id); session.delete(user); endTransaction(true); } /** * 按course的名字进行模糊查找,返回的是包含有Course持久对象的Iterator。 */ public Iterator getSomeUser(String name) throws HibernateException { String queryString = "select u from User as u where u.name like :name"; beginTransaction(); Query query = session.createQuery(queryString); query.setString("name", "%" + name + "%"); Iterator it = query.iterate(); return it; } } user的映射:User.hbm.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"> <hibernate-mapping> <class name="usermap.User" table="users"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <property name="password"/> <property name="email"/> </class> </hibernate-mapping> hibernate全局配置:hibernate.cfg.xml <?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"> <hibernate-configuration> <session-factory> <!-- 显示实际操作数据库时的SQL --> <property name="show_sql">false</property> <!-- SQL 方言,这边设定的是MySQL --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- JDBC 驱动程序 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- JDBC URL 注意这边我设定的所使用的编码 --> <property name="connection.url">jdbc:mysql://localhost:3306/myproject</property> <!-- 数据库使用者 --> <property name="connection.username">root</property> <!-- 数据库密码 --> <property name="connection.password">123456</property> <!-- 以下设置对象与数据库表格映像文件 --> <mapping resource="usermap/User.hbm.xml"/> </session-factory> </hibernate-configuration> 测试网页:index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="usermap.User"%> <%@ page import="usermap.UserBean"%> <%@ page import="java.util.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% UserBean ub=new UserBean(); Iterator ii=ub.getAllUsers(); int i=0; while(ii.hasNext()&&i<3){ User u=(User)ii.next(); out.print(u.getId()+u.getName()+"<br>"); i++; } %> </body> </html>


    最新回复(0)