robsonrobi wrote:
ah o.k. also erstelle ich mir erst das objekt, also z.b. ich möchte in die table person, welche aus id und name besteht, einen datensatz eintragen, dann ungefähr so?:
Person p = new Person()
p.id("1");
p.name("test");
hibernateSession.save(p);
oder anders?
grüße
robson und danke!
Genauso. man muss natürlich noch für das Mapping sorgen. Da gibt es prinzipell 2 Möglichkeiten entweder xml-files:
Nachfolgend ein Demo-Beispiel, das bei mir noch auf dem Nodebook herumlag
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.liantis.phone.dom">
<class name="PersonImpl"
table="Person">
<id name="id" type="long" column="id" >
<generator class="increment">
<!--generator class="native">
<param name="sequence">seq_person</param-->
</generator>
</id>
<property name="firstname" column="firstname" />
<property name="lastname" column="lastname"/>
<property name="address" column="address"/>
<property name="city" column="city"/>
<property name="zipcode" column="zipcode"/>
<!-- Person and Phones are a komposition -->
<set name="phones" cascade="all" lazy="false" >
<key column="person_id" update="false" />
<one-to-many
class="PhoneImpl" />
</set>
<query name="findPersonByName">from PersonImpl where lastname like :name </query>
<query name="deleteAllPersons">delete from PersonImpl</query>
</class>
<class name="PhoneImpl"
table="Phone">
<id name="id" type="long" column="id">
<generator class="increment">
</generator>
</id>
<property name="msisdn" column="msisdn"/>
<many-to-one name="person" class="PersonImpl" column="person_id" >
</many-to-one>
<query name="deleteAllPhones">delete from PhoneImpl</query>
</class>
</hibernate-mapping>
oder Annotations. Für Annotations habe ich kein Beispiel so direkt mit Hibernate, weil ich seit einiger Zeit nur noch JPA mit Hibernate-Entitymanager verwende :
JPA-Beispiel mit Annotations:
package com.liantis.demo.rating.dom;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity(name="Customer")
@Table(name="customer")
@NamedQueries( { @NamedQuery(name="findAllCustomer" , query="from Customer"),
@NamedQuery(name="findCustomerByMsisdn" , query="from Customer where msisdn = :msisdn")
})
public class CustomerImpl implements Customer, Serializable {
private static final long serialVersionUID = 1L;
@Id()
private String msisdn ;
private String name ;
@OneToMany(targetEntity =RatedAmountImpl.class, mappedBy = "customer", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
private Set<RatedAmount> ratedAmount = new HashSet<RatedAmount>();
public CustomerImpl() {
}
public CustomerImpl(String aMsisdn , String aName ) {
msisdn=aMsisdn;
name=aName;
}
public String getMsisdn() {
return msisdn;
}
public String getName() {
return name;
}
@Override
public boolean equals(Object aCustomer) {
if (aCustomer instanceof Customer) {
return msisdn.equals( ((Customer)aCustomer).getMsisdn());
}
return false;
}
@Override
public int hashCode() {
return msisdn.hashCode();
}
@Override
public String toString() {
return "msisdn="+msisdn+" ,name=" +name;
}
public Set<RatedAmount> getRatedAmount() {
return ratedAmount;
}
}
Aber bei Hibernate (ohne JPA) ist es fast 1:1 identisch.
MfG
Manfred