課程的下半部則是將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>
留言列表