hibernate

  接着上篇小说,今后去修改注册登录逻辑代码还为前卫早,大家还亟需到后台去设置有些布署。

Hibernate的主导零部件
在根据MVC设计形式的JAVA
WEB应用中,Hibernate能够作为模型层/数据访问层。它经过布置文件(hibernate.properties或hibernate.cfg.xml)和照耀文件(***.hbm.xml)把JAVA对象或PO(Persistent
Object,持久化对象)映射到数据库中的数据库,然后经过操作PO,对数据表中的数额开展增,删,改,查等操作。
除配备文件,映射文件和持久化类外,Hibernate的着力组件包括以下几局地:
a)Configuration类:用来读取Hibernate配置文件,并生成SessionFactory对象。
b)SessionFactory接口:暴发Session实例工厂。
c)Session接口:用来操作PO。它有get(),load(),save(),update()和delete()等情势用来对PO进行加载,保存,更新及删除等操作。它是Hibernate的主干接口。
d)Query接口:用来对PO举办查询操。它可以从Session的createQuery()方法生成。
e)Transaction接口:用来保管Hibernate事务,它最首要措施有commit()和rollback(),可以从Session的beginTrancation()方法生成。

管理—设置

图片 1

 

图片 2

 

先配备好那2项设置,邮箱配置是为着印证注册时听从是或不是正常,下一篇小说须要用到。

注:邮箱配置中的密码并不是QQ密码,而是在QQ邮箱中生成的授权码,具体获取请登录QQ邮箱查看

 

Persistent Object
持久化对象足以是普普通通的Javabeans,惟一特殊的是它们与(仅一个)Session相关联。JavaBeans在Hibernate中留存两种状态:
1.临时气象(transient):当一个JavaBean对象在内存中孤立存在,不与数据库中的数据有其它涉及关系时,那么这些JavaBeans对象就称为临时对象(Transient
Object)。
2.持久化状态(persistent):当一个JavaBean对象与一个Session相关联时,就成为持久化对象(Persistent
Object)
3.脱管状态(detached):在那么些Session被关闭的同时,那个目的也会退出持久化状态,就变成脱管状态(Detached
Object),能够被应用程序的任何层自由使用,例如可以做与表示层打交道的数据舆对象(Data
Transfer Object)。

言语翻译

图片 3

进入后台能够看来圈出来这个单词,大家的语言已经安装为简体普通话,但一些地点没有中文出现,或然小编还没来得及更新语言文件,只得我们友好去完善了。

此间我以“[Appearance]”为例,其余翻译以此类推即可。

打开AbpZeroTemplate.xml语言文件,搜索:“Appearance”

文本路径:D:\abp
version\aspnet-zero-3.4.0\aspnet-zero-3.4.0\src\MyCompanyName.AbpZeroTemplate.Core\Localization\AbpZeroTemplate\AbpZeroTemplate.xml

<text name="Appearance">Appearance</text>

 

看对应的故事情节是怎么意思,英文好的可以翻译得更好,小编只能借助翻译工具,那里自个儿翻译出来是“外观”的情趣。

 

下一场打开AbpZeroTemplate-zh-CN.xml语言文件,同样招来:“Appearance”,如若没有找到,就在文书末尾添加这一个键值对。

文本路径:D:\abp
version\aspnet-zero-3.4.0\aspnet-zero-3.4.0\src\MyCompanyName.AbpZeroTemplate.Core\Localization\AbpZeroTemplate\AbpZeroTemplate-zh-CN.xml

<text name="Appearance">外观</text>

 

 

最终,保存生成项目,浏览器访问,可以看到”[Appearance]“已经成为”外观“,其余翻译重复此步骤即可。

 

回到总目录

 

Hibernate的运作进程 Hibernate的运转进度如下:
A:应用程序先调用Configration类,该类读取Hibernate的配置文件及映射文件中的音信,并用那些新闻生成一个SessionFactpry对象。
B:然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等办法对PO举行加载,保存,更新,删除等操作;在询问的情状下,可通过Session对象生成一个Query对象,然后利用Query对象实施查询操作;固然没有万分,Transaction对象将
提交那几个操作结果到数据库中。

Hibernate的运作进程如下图:
图片 4

Hibernate简单示例:
数据:

table T_register
图片 5(
图片 6    id    int primary key,
图片 7    userName varchar(30),
图片 8    userPwd varchar(30),
图片 9    sex varchar(10),
图片 10    age int
图片 11)

视图层:注册页面register.jsp

<%=java contentType””=GBK%>
图片 12<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd"&gt;
图片 13<html>
图片 14<head>
图片 15<meta http-equiv=”Content-Type” content=”text/html; charset=GBK”>
图片 16<title>Insert title here</title>
图片 17</head>
图片 18<body>
图片 19
图片 20<form action=”servlet/RegisterServlet” method=”POST”>
图片 21    用户名:<input type=”text” name=”userName” /><BR>
图片 22    密  码:<input type=”text” name=”userPwd” /><BR>
图片 23    性  别:<input type=”text” name=”sex” /><BR>
图片 24    年  龄:<input type=”text” name=”age” /><BR>
图片 25    <input type=”submit” value=”save” />
图片 26</form>
图片 27</body>
图片 28</html>

设计持久化类TRegister.java

持久化类

设计Hibernate配置文件hibernate.cfg.xml

hibernate.cfg.xml

设计映射文件TRegister.hbm.xml

TRegister.hbm.xml

设计hibernate基础类HibernateUtil.java

/**
图片 29 * hibernate 基础类
图片 30 * @author fengyan
图片 31 * date 2007-01-09 02:32
图片 32 */
图片 33import org.hibernate.HibernateException;
图片 34import org.hibernate.Session;
图片 35import org.hibernate.SessionFactory;
图片 36import org.hibernate.cfg.Configuration;
图片 37
图片 38public class HibernateUtil {
图片 39    
图片 40    private static final SessionFactory sessionFactory;
图片 41    
图片 42    static
图片 43    {
图片 44        try
图片 45        {
图片 46            Configuration config = new Configuration().configure(“/hibernate/hibernate.cfg.xml”);
图片 47            sessionFactory = config.buildSessionFactory();
图片 48        }
图片 49        catch(Throwable e)
图片 50        {
图片 51            throw new ExceptionInInitializerError(e);
图片 52        }
图片 53    }
图片 54    
图片 55    public static final ThreadLocal session = new ThreadLocal();
图片 56    
图片 57    public static Session currentSession() throws HibernateException
图片 58    {
图片 59        Session s = (Session)session.get();
图片 60        //Open a new Session,if this Thread has none yet
图片 61        if(s == null || !s.isOpen())
图片 62        {
图片 63            s = sessionFactory.openSession();
图片 64            session.set(s);
图片 65        }
图片 66        return s;
图片 67    }
图片 68    
图片 69    public static void closeSession() throws HibernateException
图片 70    {
图片 71        Session s = (Session)session.get();
图片 72        session.set(null);
图片 73        if(s != null)
图片 74            s.close();
图片 75    }
图片 76
图片 77}
图片 78

设计控制类
图片 79package hibernate.servlet;
图片 80/**
图片 81 * @author fengyan
图片 82 * date  2007-01-09 02:44
图片 83 * 设计Hibernate控制类
图片 84 */
图片 85import hibernate.HibernateUtil;
图片 86import hibernate.PO.TRegister;
图片 87
图片 88import java.io.IOException;
图片 89import java.io.PrintWriter;
图片 90
图片 91import javax.servlet.ServletException;
图片 92import javax.servlet.http.HttpServlet;
图片 93import javax.servlet.http.HttpServletRequest;
图片 94import javax.servlet.http.HttpServletResponse;
图片 95
图片 96import org.hibernate.HibernateException;
图片 97import org.hibernate.Session;
图片 98import org.hibernate.Transaction;
图片 99
图片 100public class RegisterServlet extends HttpServlet {
图片 101
图片 102    private static final String CONTENT_TYPE = “text/html;charset=GBK”;
图片 103    public void init() throws ServletException {
图片 104        // Put your code here
图片 105    }
图片 106    public void destroy() {
图片 107        super.destroy(); // Just puts “destroy” string in log
图片 108        // Put your code here
图片 109    }
图片 110
图片 111    
图片 112    public void doGet(HttpServletRequest request, HttpServletResponse response)
图片 113            throws ServletException, IOException {
图片 114
图片 115        response.setContentType(CONTENT_TYPE);
图片 116        request.setCharacterEncoding(“GBK”);
图片 117        
图片 118        PrintWriter out = response.getWriter();
图片 119        
图片 120        String userName = request.getParameter(“userName”);
图片 121        String userPwd = request.getParameter(“userPwd”);
图片 122        String sex = request.getParameter(“sex”);
图片 123        int age = Integer.parseInt(request.getParameter(“age”));
图片 124        
图片 125        TRegister rg = new TRegister();
图片 126        rg.setAge(age);
图片 127        rg.setSex(sex);
图片 128        rg.setUserName(userName);
图片 129        rg.setUserPwd(userPwd);
图片 130        
图片 131        Session session = HibernateUtil.currentSession();//生成Session实例
图片 132        Transaction tx = session.beginTransaction();
图片 133        
图片 134        try
图片 135        {
图片 136            session.save(rg);    //保存持久类对象
图片 137            tx.commit();        //提交到数据库
图片 138            session.close();
图片 139            response.sendRedirect(“registerOK.jsp”);
图片 140        }
图片 141        catch(HibernateException e)
图片 142        {
图片 143            e.printStackTrace();
图片 144            tx.rollback();
图片 145        }
图片 146        
图片 147    }
图片 148
图片 149    public void doPost(HttpServletRequest request, HttpServletResponse response)
图片 150            throws ServletException, IOException {
图片 151        doGet(request,response);
图片 152        
图片 153    }
图片 154
图片 155
图片 156
图片 157}

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注