課程的下半部則是將struts2課程中的範例來做結合

 

一樣,hibernate的三大結構 Entity 、 Mapping 、 Config

將成員model 新增一個mapping 對應欄位成員 

Ex:

Player.java :

public class Player {

private String name;
private String address;
private String city;
private String province;
private String postalCode;

/**
* This is the constructor. It is package-private to prevent misuse.
* The PlayerService.getPlayer method should be used to create a
* new player object.
*/
public Player() {
}
public Player(String name) {
this.name = name;
}

/**
* This is the full constructor.
*/
public Player(String name, String address, String city,
String province, String postalCode) {
this.name = name;
this.address = address;
this.city = city;
this.province = province;
this.postalCode = postalCode;
}

public String getName() {
return name;
}
public void setName(String value) {
name = value;
}
public String getAddress() {
return address;
}
public void setAddress(String value) {
address = value;
}
public String getCity() {
return city;
}
public void setCity(String value) {
city = value;
}
public String getProvince() {
return province;
}
public void setProvince(String value) {
province = value;
}
public String getPostalCode() {
return postalCode;
}
public void setPostalCode(String value) {
postalCode = value;
}

} // END of Player class

對應之Mapping

Player.hbm.xml (Mapping):

<hibernate-mapping package="player" >
<class name="Player" table="player">
<id name="name" type="string" length="10">
<column name="name"></column>
<generator class="assigned"></generator>
</id>

<property name="address" type="string">
<column name="address"></column>
</property>

<property name="city" type="string">
<column name="city"></column>
</property>

<property name="province" type="string">
<column name="province"></column>
</property>

<property name="postalCode" type="string">
<column name="postalCode"></column>
</property>

</class>
</hibernate-mapping>

 

EntityManager.java (Entity) :

public class EntityManager {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SchemaExport se = new SchemaExport(new Configuration().configure());
se.create(true, true);

Player pp = setPlayData("Josh","Tanyao","Taipei","324","??");
System.out.println(pp.getName());

}


private static Player setPlayData(String strName,String strAdr,String strCity,String strPie, String strPcode)
{
Player p1 = new Player();
p1.setName(strName);
p1.setAddress(strAdr);
p1.setCity(strCity);
p1.setPostalCode(strPie);
p1.setProvince(strPcode);

Session sessionLink = HibernateUtils.getSessionFactory()
.getCurrentSession();
sessionLink.beginTransaction();
sessionLink.save(p1);
sessionLink.getTransaction().commit();


return p1;
}

}

SchemaExport 參考官網: http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/tool/hbm2ddl/SchemaExport.html

上面有用到SchemaExport , 相當於生成數據表   也就是會幫你生出此資料表

以此範例為例: se.create(true, true);  則是每次呼叫就會將資料刪掉再重新建立一個新的表格

 

下面就是我執行時系統顯示的資訊:

drop table if exists player   // 由此可了解 如果資料存在則 drop  

// 下面則是所建立的資料表

create table player (
name varchar(255) not null,
address varchar(255),
city varchar(255),
province varchar(255),
postalCode varchar(255),
primary key (name)
)

然後再去看你的 資料庫 中 就已經多了一個名為

 

hibernate.cfg.xml (Config) :

<hibernate-configuration>
<session-factory name="SessionFactory">
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/webimpl</property>
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">UTF-8</property>
<property name="connection.username">root</property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="current_session_context_class">thread</property>
<mapping resource="duke/soccer/model/player.hbm.xml" />
</session-factory>
</hibernate-configuration>

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JoshS 的頭像
    JoshS

    JoshS的部落格

    JoshS 發表在 痞客邦 留言(0) 人氣()