`
dreamer_0924
  • 浏览: 180862 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

(转载)eclipse搭建hibernate环境

阅读更多
1.开发环境
      Eclipse 3.2+MySQL 4.0.16+Hibernate3.0
     首先应该安装好Eclipse和MySQL,此外准备好MySQL的JDBC Driver和Hibernate3.0,相关下载地址如下:
      Eclipse SDK:
        http://www.eclipse.org/downloads/index.php  
        MySQL及MySQL的JDBC Driver:
           http://www.mysql.org
        Hibernate:
          http://www.hibernate.org
        此外我还安装了Eclipse的一个Hibernate插件:
      Hibernate synchronizer
           http://hibernatesynch.sourceforge.net


        Plugin Search:
         http://eclipse-plugins.2y.net/eclipse/search.jsp  

        Hibernate synchronizer插件的安装和配置有问题请直接Google。

      在工程中其实只用到了Hibernate synchronizer插件的一部分功能,Hibernate依赖的相关jar包最好还是手动添加,因为最开始用Hibernate synchronizer添加时总是发生错误。
      将下载的Mysql driver和Hibernate包解压缩,我们需要的只是里面相关的jar,在Eclipse中新建Mysql_Driver和Hibernate两个 user library,将mysql-connector-java-3.0.15-ga-bin.jar加入Mysql_Driver中,将 hibernate3.jar,
,log4j-1.2.11.jar,antlr-2.7.5H3.jar,asm.jar,asm-attrs.jar,cglib- 2.1.2.jar,commons-collections-2.1.1.jar,commons-logging-1.0.4.jar,dom4j- 1.6.1.jar,ehcache-1.1.jar,jta.jar加入到Hibernate中。

2.开始
在Mysql中新建test数据库(Mysql其实有个空的test数据库),然后新建下面的Table

create table user (
id int(10) not null auto_increment primary key,
name varchar(20) not null,
password varchar(20) not null,
email varchar(50),
address varchar(100)
)type=innodb;


新建Java Project,将Mysql_Driver,Hibernate两个user library添加到该工程的java build path中。

新建与数据表对应的POJO类:User和Contact

/**
*
*  
*/
package com.user;

/**
* @author lzy
*
*/
public class User{
     private Integer id;
     private String name;
     private String password;
     private Contact contact;
    

/**
   * @return Returns the id.
   */
public Integer getId() {
   return id;
}
/**
   * @param id The id to set.
   */
public void setId(Integer id) {
   this.id = id;
}
/**
   * @return Returns the name.
   */
public String getName() {
   return name;
}
/**
   * @param name The name to set.
   */
public void setName(String name) {
   this.name = name;
}
/**
   * @return Returns the password.
   */
public String getPassword() {
   return password;
}
/**
   * @param password The password to set.
   */
public void setPassword(String password) {
   this.password = password;
}
/**
   * @return Returns the contact.
   */
public Contact getContact() {
   return contact;
}
/**
   * @param contact The contact to set.
   */
public void setContact(Contact contact) {
   this.contact = contact;
}
    
    
}
/**
*
*/
package com.user;

/**
* @author lzy
*
*/
public class Contact {
private String email;
     private String address;

/**
   * @return Returns the address.
   */
public String getAddress() {
   return address;
}
/**
   * @param address The address to set.
   */
public void setAddress(String address) {
   this.address = address;
}
/**
   * @return Returns the email.
   */
public String getEmail() {
   return email;
}
/**
   * @param email The email to set.
   */
public void setEmail(String email) {
   this.email = email;
}
}

之后可以用synchronizer插件生成Hibernate配置文件和映射文件(相关过程可以参考http://www.ideagrace.com/html/doc/2005/08/01/00315.html),不过映射文件必须稍作修改。

hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration
     PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
     <session-factory >

   <!-- local connection properties -->
   <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
   <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
   <property name="hibernate.connection.username"></property>
   <property name="hibernate.connection.password"></property>
   <!-- property name="hibernate.connection.pool_size"></property -->

   <!-- dialect for MySQL -->
         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

         <property name="hibernate.show_sql">True</property>
         <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
      <mapping resource="User.hbm.xml"/>


     </session-factory>
</hibernate-configuration>

User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="com.user">
<class
   name="User"
   table="user"
>
   <id
    name="Id"
    type="integer"
    column="id"
   >
    <generator class="native"/>
   </id>

   <property
    name="Name"
    column="name"
    type="string"
    not-null="true"
    length="20"
   />
   <property
    name="Password"
    column="password"
    type="string"
    not-null="true"
    length="20"
   />
   <component name="Contact" class="Contact">
    <property
    name="Email"
    column="email"
    type="string"
    not-null="false"
    length="50"
   />
   <property
    name="Address"
    column="address"
    type="string"
    not-null="false"
    length="100"
   />
   </component>
  


</class>
</hibernate-mapping>

3.测试
添加一个测试类:HibernateTest

package com.user;

import java.util.List;
import java.util.ListIterator;

import org.hibernate.*;
import org.hibernate.cfg.*;

public class HibernateTest {
     public static void main(String[] args) throws HibernateException {
         SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        
         //
         //testInsert(sessionFactory);
        
         //
         testQuery(sessionFactory);
        
          
         sessionFactory.close();
        
     }
     public static void testInsert( SessionFactory sessionFactory )throws HibernateException {
     
       Session session = sessionFactory.openSession();
         Transaction tx= session.beginTransaction();
         User user = new User();
         Contact contact=new Contact();
         contact.setEmail("email");
         contact.setAddress("address");
        
         user.setName("caterpillar");
         user.setPassword("password");
         user.setContact(contact);
        
         session.save(user);
         tx.commit();
         session.close();
         System.out.println("OK!");
    }
    
     public static void testQuery( SessionFactory sessionFactory )throws HibernateException {
     
      Session session = sessionFactory.openSession();
         Transaction tx= session.beginTransaction();
         User user = new User();
         Contact contact=new Contact();
                  
         Query query=session.createQuery("from User as user");
         //query.setCharacter(1, 'M');
         List names =query.list();
         for(ListIterator it=names.listIterator();it.hasNext();){
            user= (User)it.next();
            System.out.println("Id: " + user.getId());
             System.out.println("name: " + user.getName());
             System.out.println("password: " + user.getPassword());
             if(user.getContact()!=null){
             
              if(user.getContact().getEmail()!=null){
               System.out.println("Email: " + user.getContact().getEmail());
              }
              if(user.getContact().getAddress()!=null){
               System.out.println("Address: " + user.getContact().getAddress());
                
              }
             }
            
            
            
         }
          
       
         tx.commit();
         session.close();
     
     }
}

分享到:
评论

相关推荐

    Web 框架之 SSH 框架的简单搭建的整理(基于Eclipse,搭建演示完整工程,jar、代码 、html)

    其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。 ———————————————— ...

    SpringMVC+Spring+hibernate.pdf

    这通常是使用Eclipse、IntelliJ IDEA等IDE(集成开发环境)完成,以便于管理和构建项目。 3. 建立正确的项目包结构,并将配置文件和jar包放置在项目对应的位置。包结构的合理性将直接影响到项目后期的维护和扩展。 ...

    后台管理系统

    环境要求 JDK6或更高版本(支持JDK7、JDK8)。建议使用JDK8,有更好的内存管理。更低版本的JDK6、JDK7可能需要设置Java内存-XX:PermSize=128M -XX:MaxPermSize=512M,否则可能出现这种类型的内存溢出:java.lang....

    springmybatis

    mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以...

    li_3ck_02a_1118.pdf

    li_3ck_02a_1118

    基于MATLAB的牛顿迭代法实现

    基于MATLAB的牛顿迭代法实现

    mellitz_3ck_01_0319.pdf

    mellitz_3ck_01_0319

    2025探索银行业人工智能驱动技术转型的投资回报率

    内容概要:文章阐述了银行采用人工智能(AI)技术替代传统系统的紧迫性和收益,讨论了通过构建现代化的数据和技术平台实现效率提升的方法,同时强调实施过程中确保数据质量和建立信任的重要性。文中提及,在金融行业中,若想优化业绩则必须拥抱AI带来的机遇,并为此进行经营模式的革新。根据Workday主办的研讨会内容,PwC金融服务风险与监管领导和Workday金融服务高层指出了大部分银行对AI认知不足的问题,强调AI在金融、人力资源以及IT等领域的广泛应用潜力及具体应用场景,如欺诈检测、技能映射和财务管理方面的作用。并且提到了AI部署过程中可能出现的技术与非技术难题及相应解决办法,鼓励金融机构及时投资建设新型基础设施,以保持竞争力。 适用人群:银行及其他金融机构管理人员;金融科技领域的专业研究人员;对企业数字化和智能化转型感兴趣的商业分析师、投资者;从事信息技术咨询工作的顾问。 使用场景及目标:本文可以帮助金融机构制定合理的技术发展战略规划,评估是否有必要推进AI技术转型,同时也为希望涉足银行科技项目的开发者提供了宝贵的市场洞察,帮助理解行业内普遍存在的困难与潜在的市场需求。此外,对于想要了解银行

    matlab程序代码项目案例论文+程序 基于在线优化的快速模型预测控制Fast model predicitive control with matlab interface.zip

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_043071]Phase Manager and a Scalable Batching Solution.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_044386]1769-SM2 Compact I-O to DSI Module - Multi Drive Mode Operation - with.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_041232]Monitor I-O Connections in Logix.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    chromedriver-linux64-136.0.7058.0.zip

    chromedriver-linux64-136.0.7058.0.zip

    [AB PLC例程源码][MMS_042504]Logix5000 interface to Atlas-Copco Tool Controller over EtherNet-IP.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_042349]How to read-write data to-from a PLC using OPC in Visual Basic 6.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    电力工程领域中背压热电联产电厂的设计与参数计算

    内容概要:本文档介绍了背压热电联产(CHP)发电厂的详细设计步骤,涵盖确定各状态点的压力、温度、比焓以及质量流率的具体方法。主要内容围绕计算净电功率、燃料消耗及其效率展开,并提供了T-s图绘制的指南。针对每个组件(如蒸汽轮机、冷凝器、除氧器等),都列出了详细的效率假设和压力损失表,为实际工程应用提供了宝贵的参考资料和操作指导。同时,该作业任务要求学生从给定初始值中选择合适的操作条件进行系统模拟,并利用课程讲义和Moodle平台资料完成计算流程。 适用人群:对能源转换和动力设备设计感兴趣的学生或者初涉该领域的工程师。 使用场景及目标:旨在帮助学员深入了解并掌握背压热电联产装置的工作原理和技术指标计算的方法论,通过实践练习提高他们的问题解决能力。 其他说明:文档强调了稳态运行假设的重要性,即物质平衡等于能量输入等于输出的原则,并鼓励参与者借助附录提供的典型操作参数图表来寻找解决问题的方向。此外,它还特别指出对于一些变量值求解可能需要迭代法来进行调整,直至获得稳定结果。提交的报告必须含有一份详细的T-s图和其他必要附件。

    机器学习-市财政收入分析(含数据集)

    机器学习_市财政收入分析(含数据集)

    [AB PLC例程源码][MMS_046989]KAT with Code Sequencer.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    tracy_3cd_01_0318.pdf

    tracy_3cd_01_0318

    lusted_3cd_01_0918.pdf

    lusted_3cd_01_0918

Global site tag (gtag.js) - Google Analytics