zoukankan      html  css  js  c++  java
  • [Hibernate]

    Hibernate annotation 一对一的两种实现:

    1)幅表中有主表的主键ID做为引用

    2)幅表的主键即为主表的ID


    hibernate.cfg.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
    
        <session-factory>
    
            <!-- Database connection settings -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://127.0.0.1/testdb</property>
            <property name="connection.username">root</property>
            <property name="connection.password"></property>
    
            <!-- JDBC connection pool (use the built-in) -->
            <property name="connection.pool_size">1</property>
    
            <!-- SQL dialect -->
            <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    
            <!-- Enable Hibernate's automatic session context management -->
            <property name="current_session_context_class">thread</property>
    
            <!-- Disable the second-level cache  -->
            <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
    
            <!-- Echo all executed SQL to stdout -->
            <property name="show_sql">true</property>
    
            <!-- Drop and re-create the database schema on startup -->
            <property name="hbm2ddl.auto">update</property>
            
            <mapping class="com.my.bean.User"/>
            <mapping class="com.my.bean.UserCard"/>
            <mapping class="com.my.bean.UserInfo"/>
    
        </session-factory>
    
    </hibernate-configuration>

    HibernateUtil.java

    package com.my.dao.util;
    
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateUtil {
    
        private static final SessionFactory sessionFactory = buildSessionFactory();
    
        private static SessionFactory buildSessionFactory() {
            try {
                // Create the SessionFactory from hibernate.cfg.xml
                Configuration configuration = new Configuration();
                return configuration.configure().buildSessionFactory(
                        new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build());
            } catch (Throwable ex) {
                // Make sure you log the exception, as it might be swallowed
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
        }
    
        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }
        
    }

    Java Beans:

    package com.my.bean;
    
    import java.util.Date;
    
    import javax.persistence.*;
    
    @Entity
    @Table(name="user")
    public class User {
        @Id @GeneratedValue @Column(name="user_id", nullable=false)
        private long userID;
        
        @Column(name="user_name", length=100, nullable=false)
        private String userName;
        
        @Column(name="create_time", nullable=false)
        private Date createTime;
        
        @OneToOne(mappedBy="user")
        private UserCard userCard;
        
        @OneToOne(cascade=CascadeType.ALL)
        @PrimaryKeyJoinColumn
        private UserInfo userInfo;
    
        public long getUserID() {
            return userID;
        }
    
        public void setUserID(long userID) {
            this.userID = userID;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public Date getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(Date createTime) {
            this.createTime = createTime;
        }
    
        public UserCard getUserCard() {
            return userCard;
        }
    
        public void setUserCard(UserCard userCard) {
            this.userCard = userCard;
        }
    }
    package com.my.bean;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToOne;
    import javax.persistence.Table;
    
    @Entity
    @Table(name="user_card")
    public class UserCard {
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        @Column(name="card_id", nullable=false)
        private long cardID;
        
        @OneToOne
        @JoinColumn(name="user_id")
        private User user;
        
        @Column(name="card_name", nullable=false)
        private String cardName;
        
        public long getCardID() {
            return cardID;
        }
        public void setCardID(long cardID) {
            this.cardID = cardID;
        }
        public User getUser() {
            return user;
        }
        public void setUser(User user) {
            this.user = user;
        }
        public String getCardName() {
            return cardName;
        }
        public void setCardName(String cardName) {
            this.cardName = cardName;
        }
    }
    package com.my.bean;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.OneToOne;
    import javax.persistence.Table;
    
    import org.hibernate.annotations.GenericGenerator;
    import org.hibernate.annotations.Parameter;
    
    @Entity
    @Table(name="user_info")
    public class UserInfo {
        @Id
        @GeneratedValue(generator="userInfoForeignKey")
        @GenericGenerator(name="userInfoForeignKey", strategy="foreign", parameters=@Parameter(name="property", value="user"))
        @Column(name="user_id", nullable=false)
        private long userID;
        
        @Column(name="message", nullable=false)
        private String Message;
        
        @OneToOne(mappedBy="userInfo")
        private User user;
    
        public long getUserID() {
            return userID;
        }
    
        public void setUserID(long userID) {
            this.userID = userID;
        }
    
        public String getMessage() {
            return Message;
        }
    
        public void setMessage(String message) {
            Message = message;
        }
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    }

    测试:

    package com.my.init;
    import java.util.Date;
    
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    
    import com.my.bean.User;
    import com.my.bean.UserCard;
    import com.my.bean.UserInfo;
    import com.my.dao.util.HibernateUtil;
    
    public class Test {
    
        public static void main(String[] args) {
            Session session = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = session.beginTransaction();
            
            try {
                //---------------------------------------------------------
                // The first method
                //---------------------------------------------------------
                // add user
                User user = new User();
                user.setUserName("Robin");
                user.setCreateTime(new Date());
                
                // add user card
                UserCard userCard = new UserCard();
                userCard.setCardName("BBC");
                
                // add user card to user object
                user.setUserCard(userCard);
                userCard.setUser(user);
                
                //---------------------------------------------------------
                // The second method
                //---------------------------------------------------------
                UserInfo userInfo = new UserInfo();
                userInfo.setMessage("Message");
                userInfo.setUser(user);
                
                //---------------------------------------------------------
                // save
                //---------------------------------------------------------
                session.save(user);
                session.save(userCard);
                session.save(userInfo);
                
                tx.commit();
            } catch (Exception e) {
                tx.rollback();
                e.printStackTrace();
            }
            
            session.close();
        }
    
    }
  • 相关阅读:
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车按键启动和蜂鸣器报警
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    asp中设置session过期时间方法总结
    asp中设置session过期时间方法总结
    ASP.NET关于Session_End触发与否的问题
  • 原文地址:https://www.cnblogs.com/HD/p/3949796.html
Copyright © 2011-2022 走看看