Java web是一种使用Java编程语言开发web应用程序的技术,Hibernate是一种基于Java的ORM框架。Hibernate允许将Java类映射到关系数据库表,从而实现无需编写SQL语句的数据库操作。
下面是Java web Hibernate如何与数据库链接的攻略:
1. 配置Hibernate配置文件
在项目的src目录下创建一个名为hibernate.cfg.xml的文件,该文件用于配置Hibernate的连接参数,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">password</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
其中,hibernate.connection.driver_class为数据库驱动类,hibernate.connection.url为数据库连接URL,hibernate.connection.username和hibernate.connection.password为数据库用户名和密码,dialect为数据库方言,show_sql为是否输出SQL语句。
2. 配置数据源和连接池
在web应用的WEB-INF目录下创建一个名为dbcp.xml的文件,该文件用于配置数据源和连接池,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="username" password="password" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/test"/>
</Context>
其中,name为数据源名称,type为javax.sql.DataSource,driverClassName为数据库驱动类,url为数据库连接URL,username和password为用户名和密码,maxActive为最大连接数,maxIdle为最大空闲连接数,maxWait为最大等待时间。
3. 创建Java类和映射文件
在Java web项目中创建Java类和映射文件,Java类用于表示数据库表中的数据,映射文件用于将Java类和数据库表映射起来。
假设我们要创建一个User类表示用户,对应的数据表为user,那么我们可以创建如下的User类和User.hbm.xml文件:
User.java
public class User {
private int id;
private String name;
private int age;
// getter and setter methods
}
User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.example.User" table="user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="age"/>
</class>
</hibernate-mapping>
其中,class的name属性为Java类的名称,table属性为对应的数据表名称,id用于表示数据库表的主键,generator用于指定主键的生成方式,property用于表示Java类的属性对应的数据库表的字段。
4. 创建SessionFactory
在Java web项目中创建一个用于管理Hibernate Session的类SessionFactory,如下所示:
public class HibernateUtil {
private static SessionFactory sessionFactory;
static {
try {
// 读取Hibernate配置文件
Configuration cfg = new Configuration().configure();
// 创建SessionFactory
sessionFactory = cfg.buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
其中,SessionFactory用于生成Session对象,Session对象用于与数据库进行交互。
5. 创建DAO类
在Java web项目中创建一个用于操作数据库的DAO类,如下所示:
public class UserDAO {
public void save(User user) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
}
public User getById(int id) {
Session session = HibernateUtil.getSessionFactory().openSession();
User user = (User) session.get(User.class, id);
session.close();
return user;
}
}
其中,save方法用于保存用户信息到数据库,getById方法用于根据用户ID查询用户信息。
6. 示例代码
示例1:保存用户信息到数据库
public class SaveUserServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
User user = new User();
user.setName(request.getParameter("name"));
user.setAge(Integer.parseInt(request.getParameter("age")));
UserDAO dao = new UserDAO();
dao.save(user);
response.sendRedirect("/success.jsp");
}
}
其中,调用UserDAO类的save方法将用户信息保存到数据库。
示例2:根据用户ID查询用户信息
public class GetUserServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
UserDAO dao = new UserDAO();
User user = dao.getById(id);
request.setAttribute("user", user);
request.getRequestDispatcher("/user.jsp").forward(request, response);
}
}
其中,调用UserDAO类的getById方法根据用户ID查询用户信息,并将查询结果设置到request中,转发到user.jsp页面展示。
以上就是Java web Hibernate如何与数据库链接的完整攻略了,希望对你有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java web Hibernate如何与数据库链接 - Python技术站