Hibernate教程-使用Hibernate创建的Web应用程序
在这里,我们将使用Hibernate创建一个Web应用程序。为了创建Web应用程序,我们使用JSP进行表现逻辑,Bean类表示数据,DAO类表示数据库代码。
由于我们在Hibernate中创建了简单的应用程序,因此我们不需要执行任何额外的操作来创建Web应用程序。在这种情况下,我们使用JSP文件从用户那里获取值。
使用Hibernate创建Web应用程序的示例
在此示例中,我们将在数据库中插入用户的记录。这只是一个注册表单。
index.jsp
此页面从用户获取输入,并使用post方法将其发送到register.jsp文件。
<form action="register.jsp" method="post">
Name:<input type="text" name="name"/><br><br/>
Password:<input type="password" name="password"/><br><br/>
Email ID:<input type="text" name="email"/><br><br/>
<input type="submit" value="register"/>"
</form>
register.jsp
此文件获取所有请求参数,并将此信息存储到User类的对象中。此外,它调用UserDao类的register方法,传递User类对象。
<%@page import="cn.javatiku.mypack.UserDao"%>
<jsp:useBean id="obj" class="cn.javatiku.mypack.User">
</jsp:useBean>
<jsp:setProperty property="*" name="obj"/>
<%
int i=UserDao.register(obj);
if(i>0)
out.print("You are successfully registered");
%>
User.java
这是表示Hibernate中持久类的简单Bean类。
package cn.javatiku.mypack;
public class User {
private int id;
private String name,password,email;
//getters and setters
}
user.hbm.xml
它将User类映射到数据库表。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 5.3//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-5.3.dtd">
<hibernate-mapping>
<class name="cn.javatiku.mypack.User" table="u400">
<id name="id">
<generator class="increment"></generator>
</id>
<property name="name"></property>
<property name="password"></property>
<property name="email"></property>
</class>
</hibernate-mapping>
UserDao.java
一个Dao类,包含存储User类实例的方法。
package cn.javatiku.mypack;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class UserDao {
public static int register(User u){
int i=0;
StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();
SessionFactory factory = meta.getSessionFactoryBuilder().build();
Session session = factory.openSession();
Transaction t = session.beginTransaction();
i=(Integer)session.save(u);
t.commit();
session.close();
return i;
}
}
hibernate.cfg.xml
这是一个配置文件,包含有关数据库和映射文件的信息。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 5.3//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-5.3.dtd">
<hibernate-configuration>
<session-factory>
<property name="hbm2ddl.auto">create</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="connection.username">system</property>
<property name="connection.password">jtp</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<mapping resource="user.hbm.xml"/>
</session-factory>
</hibernate-configuration>