新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 计算机科学论坛计算机技术与应用『 Java/Eclipse 』 → Eclipse下Hibernate入门 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 7228 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: Eclipse下Hibernate入门 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     enorm 帅哥哟,离线,有人找我吗?
      
      
      威望:4
      头衔:头衔
      等级:大三暑假(参加全国数模竞赛拿了一等奖)(版主)
      文章:144
      积分:854
      门派:Lilybbs.net
      注册:2005/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给enorm发送一个短消息 把enorm加入好友 查看enorm的个人资料 搜索enorm在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看enorm的博客楼主
    发贴心情 Eclipse下Hibernate入门

    最近boss让做项目,借机学习了一下Hibernate,小有收获。
         hiberante是对数据库持久层访问的一种机制,hibernate的应用可以使程序员将重点放到业务逻辑的实现上。hibernate的原理是将数据库结构封装,使程序员可以像使用普通对象一样调用数据库的相关接口,从实现数据库的相关操作。
         
         由于Exadel基于eclipse集成了Hibernate,并且方便易用所以我选用
         Exadel+Mysql
         还需要hibernate3.jar http://www.hibernate.org
                 mysql-connector http://dev.mysql.com/downloads/
        
           在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;
    }
    }

    添加Hibernate支持,这时系统会要求输入一些信息,按提示即可
    完成后系统自动生成hibernate.cfg.xml,User.hbm.xml
    映射文件必须稍作修改。

    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();
         
        }
    }
    =======================================
    这样就OK了


    [此贴子已经被作者于2006-2-17 19:01:34编辑过]

       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    天亮了

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/2/17 18:30:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/28 14:46:20

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms