博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate学习1--SpringMVC+Hibernate集成环境搭建
阅读量:6195 次
发布时间:2019-06-21

本文共 7799 字,大约阅读时间需要 25 分钟。

hot3.png

除了刚毕业那会用了几个月的hibernate好像好久都没有碰过了,正好最近在整理以前的学习笔记就把这块知识系统的学习一下,特别是hibernate和ibatis的对比应该对我现在做的东西有很大的帮助。

这个博客可能会是一个系列,今天是第一篇,搭建环境篇。由于以前的环境是springmvc+maven的环境,所以本系列博客就采用springmvc+hibernate的环境。

1 maven环境的jar包依赖,我这里采用的是spring3.2.2的版本和Hibernte的4.2.0的版本(pom.xml)

 
            
org.springframework
            
spring-core
            
3.2.2.RELEASE
        
        
            
org.springframework
            
spring-context
            
3.2.2.RELEASE
        
        
            
org.springframework
            
spring-jdbc
            
3.2.2.RELEASE
        
        
            
org.springframework
            
spring-beans
            
3.2.2.RELEASE
        
        
            
org.springframework
            
spring-web
            
3.2.2.RELEASE
        
        
            
org.springframework
            
spring-expression
            
3.2.2.RELEASE
        
        
            
org.springframework
            
spring-orm
            
3.2.2.RELEASE
        
        
            
org.springframework
            
spring-webmvc
            
3.2.2.RELEASE
        
                
        
            
org.hibernate
            
hibernate-core
            
4.2.0.Final
        
        

2 springMvc的配置(web.xml)

    
    
        
spring
        
org.springframework.web.servlet.DispatcherServlet
        
1
    
    
        
spring
        
*.do
    
    
        
contextConfigLocation
        
/WEB-INF/applicationContext.xml
    
    
        
org.springframework.web.context.ContextLoaderListener
    
    

3 Spring代理Hibernate的配置,正常来说,hibernate应该有自己的配置文件的,里面配置数据源信息及hibernate的属性设置,但是我们使用了spring就可以把相关配置放到spirng里了。(spring-servlet.xml)

 
    
        
        
        
        
        
    
        
        
            
                
com/XXX/test/hibernate/studentTest/Student.hbm.xml
            
                
            
                
org.hibernate.dialect.MySQLDialect                
true                
true            
                
        
        

4 接下来就是hibernate的业务配置文件了(Student.hbm.xml)

    
        
            
                
            
            

对应的表结构为

220321_onOz_195637.png

5 Student的DO和相关DAO实现如下(Student.java,StudentDAO.java)

public class Student implements Serializable {    private Integer id;    private String name;    public Student() {        super();    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

@Servicepublic class StudentDAO {    @Autowired    private SessionFactory sessionFactory;    private Session session=null;    public void init() {        session = sessionFactory.openSession();    }    public void save(Student student) {        Transaction tran = session.getTransaction();        tran.begin();        session.save(student);        tran.commit();    }    public void update(Student student) {        Transaction tran = session.getTransaction();        tran.begin();        session.update(student);        tran.commit();    }    public void delete(Integer id) {        String hql = "delete from Student o where o.id = ?";        Transaction tran = session.getTransaction();        tran.begin();        Query query = session.createQuery(hql);        query.setParameter(0, id);        query.executeUpdate();        tran.commit();    }    @SuppressWarnings("unchecked")    public Student getModel(Integer id) {        String hql = "from Student o where id = :id";        Query query = session.createQuery(hql);        query.setParameter("id", id);        List list = query.list();        if (list != null && list.size() == 1) {            return (Student) list.get(0);        } else {            return null;        }    }    @SuppressWarnings("unchecked")    public List getPagination(int maxResults, int firstResult) {        String hql = "from Student o";        Query query = session.createQuery(hql);        query.setFirstResult(firstResult);        query.setMaxResults(maxResults);        return query.list();    }}

6 前台的调用方法如下(StudentController.java)

@Controllerpublic class StudentController {    @Autowired    StudentDAO studentDAO;    @RequestMapping(value = "/student/test.do" )    public String test(HttpServletRequest request, HttpServletResponse response) {        studentDAO.init();        //添加        for (int i = 0; i < 10; i++) {            Student student = new Student();            student.setName("Tao" + i);            studentDAO.save(student);        }        //删除        studentDAO.delete(2);        // 修改        Student student = new Student();        student.setId(4);        studentDAO.update(student);        // 单个查询        Student s = studentDAO.getModel(4);        System.out.println(s.getName());        // 分布查询        List list = studentDAO.getPagination(4, 1);        for (int i = 0; i < list.size(); i++) {            Student std = (Student) list.get(i);            System.out.println(std.getName());        }        return "success";    }}

总结一下,以上就是基本的运行环境了,以后的代码都是在这个环境的基础上进行展开。主要是maven的依赖,spring代理hibernate的配置及hibernate的DO和数据库的映射。当然Hibernate这么流行,其功能不可能只有这些,以后我们会探讨一些更深入的知识。

另外 下面这两句的配置会在console端打印出相关的调用sql语句,对于代码的调试有很大帮助。

   
true    
true

下面是一些其他的hibernate属性配置

         
         
20                           
         
true                  
         
50                   
         
23                   
        
false                  
         
true                  
         
gbk

另外,dilletc是用来配置hibernte的方言的,我们这里用的是mysql所以按照如下配置,

 
org.hibernate.dialect.MySQLDialect

Hibenate的还支持以下方言

DB2 org.hibernate.dialect.DB2Dialect
DB2 AS/400 org.hibernate.dialect.DB2400Dialect
DB2 OS390 org.hibernate.dialect.DB2390Dialect
PostgreSQL org.hibernate.dialect.PostgreSQLDialect
MySQL org.hibernate.dialect.MySQLDialect
MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect
MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect
Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect
Sybase org.hibernate.dialect.SybaseDialect
Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect
Microsoft SQL Server org.hibernate.dialect.SQLServerDialect
SAP DB org.hibernate.dialect.SAPDBDialect
Informix org.hibernate.dialect.InformixDialect
HypersonicSQL org.hibernate.dialect.HSQLDialect
Ingres org.hibernate.dialect.IngresDialect
Progress org.hibernate.dialect.ProgressDialect
Mckoi SQL org.hibernate.dialect.MckoiDialect
Interbase org.hibernate.dialect.InterbaseDialect
Pointbase org.hibernate.dialect.PointbaseDialect
FrontBase org.hibernate.dialect.FrontbaseDialect
Firebird org.hibernate.dialect.FirebirdDialect

转载于:https://my.oschina.net/zimingforever/blog/216909

你可能感兴趣的文章
iOS开发库的族“.NET研究”谱介绍
查看>>
图解DevExpress RichEditControl富文本的使用,附源码及官方API
查看>>
BNU 34986 Football on Table
查看>>
三级联动---城市地区选择
查看>>
剖析 Laravel 计划任务--避免重复
查看>>
公司框架遇到的问题
查看>>
详解 Discuz 的 PHP经典加密解密函数 authcode
查看>>
Mysql XX 天之内
查看>>
AE创建气泡式的提示框(VB.Net和C#源码)
查看>>
Oracle如何删除表中重复记录
查看>>
nginx 是如何处理访问请求的
查看>>
wget参数用法详解
查看>>
安卓自学应用程序生命周期法
查看>>
【COCOS2D-X(1.X 2.X)】Json(cpp版)以及添加自定义字体库教程
查看>>
使用curl命令查看访问url的时间
查看>>
whois
查看>>
python添加环境变量
查看>>
Linux 新手容易犯的 7 个错误
查看>>
DP-01背包 (题)
查看>>
WinForm中跨线程操作控件
查看>>