Entity anlegen
- Wählen Sie im Menü File > New > Entity.
- Geben Sie bei Entity > Name die Bezeichnung Automaker ein.
Klicken Sie auf Finish.
Hinweis:
- Benamung von Entities - Entities werden i.d.R. in Singular bezeichnet, z.B. Customer, während Datenbanktabellen meist in Plural bezeichnet werden, z.B. Customers.
- Data Access Object - Die Einstellungen bei Data Access Object können Sie übernehmen, um zu diesem Entity ein gleichnamiges Data Access Object (DAO) zu erzeugen.
- Persistence Unit - Die Persistence Unit wird automatisch generiert.
Parameter:
- Entity - Legt im Project Management ein neues Entity an.
- Data
- Access Object - Legt im Project Management
- ein neues DAO (Data Access Obect) an.
Ergebnis:
Im- Project Management
Automaker
- - Unter main-java > domain wird die Klasse Customer und unter main-java > dal die Klasse CustomerDAO angelegt.
Customer
Code Block language java theme Confluence @Entity @DAO(
CustomerDAO.class) @Cacheable(true) @Table(name =
"Customer") public class Customer implements
Serializable {
private int id; public
Customer() { super();
} @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") public int getId() { return this.id; } public void setId(final int id) { this.id = id; }
}
CustomerDAO
Code Block language java theme Confluence public class
CustomerDAO extends
JpaDataAccessObject.Default<Customer, Integer> {
public
final
Attribute Hinzufügen
Hinweis:
- Code-Generierung bei jeder Änderung - Bei jeder Änderung, die Sie im Entity Editor vornehmen, wird sofort der entsprechende Quellcode dazu generiert, überschrieben oder gelöscht.
- Löschen von Attributen - Die Getter und Setter eines Attributes werden standardmäßig nicht entfernt. Dies ist jedoch empfehlenswert. Klicken Sie deshalb im Hinweis-Dialog auf Yes To All, um auch alle Getter und Setter zu entfernen.
Parameter:
- Settings
- Entity caption - Hier lässt sich ein Attribut oder mehrere Attribute festlegen, die später auf der Oberfläche angezeigt werden sollen, z.B. in einer ComboBox. Auch die Angabe von Trennzeichen ist möglich, z.B. {%company}, {%carmodels}, {%price} ergibt zur Laufzeit BMW, 320, 39000.
- Table name - Name der Datenbank-Tabelle, falls diese sich vom Entity-Namen unterscheidet, insbesondere bei der Verwendung von Leerzeichen oder kryptischen Bezeichnungen für die entsprechende Datenbank-Tabelle, z.B. CMOD anstelle von Carmodel.
- Table catalog - Angabe des Datenbank Catalog, falls vorhanden.
- Table schema - Angabe des Datenbank Schemas, falls vorhanden.
- Attributes
- Name - Bezeichnung des Attributs.
- Type - Datentyp des Attributs. Zur Auswahl stehen die von Java unterstützten Datentypen.
- Primitive Datentypen - Primitive Datentypen int, double, boolean beginnen mit Kleinbuchstaben und können nur einzelne Werte speichern. In der Auswahlliste nicht aufgeführte Typen lassen sich über die Tastatur angeben, z.B. float.
- Datentyp Klassen - Zu jedem primitiven Datentyp gibt es in Java eine entsprechende Wrapper-Klasse. Klassen beginnen in Java mit Großbuchstaben. Es ist empfehlenswert die Typ-Klassen zu verwenden, da primitive Datentypen keinen Null Wert annehmen können, der jedoch in Datenbanken häufig verwendet wird.
- Caption - Die hier angegebene Bezeichnung erscheint zur Laufzeit auf der Oberfläche, z.B. als Spaltenname in einer Table.
Editor Funktionen:
- Add Attribute - Legt ein neues Attribut an.
- Delete - Entfernt das selektierte Attribut. Der entsprechende Javacode wird sofort gelöscht.
- Select all - Selektiert alle Attribute.
- Clear selection - Hebt die Selektierung auf.
- Invert selection - Kehrt die aktuelle Selektierung um.
- Show in Source - Wechselt in die Code-Ansicht und markiert den Code des selektierten Attributs.
- Open Diagram - Öffnet den ER-Diagram Viewer.
Ergebnis:
Die Klasse Automaker wird um das Attribut company erweitert.
Code Block | ||||
---|---|---|---|---|
| ||||
private String company;
public String getCompany() {
return company;
}
public void setCompany(String attribute) {
this.company = attribute;
} |
1:n / n:1 Relation
Ergebnis:
Entity Carmodel - Die Klasse Carmodel wird um das Attribut automaker vom Typ Automaker erweitert.
Code Block | ||||
---|---|---|---|---|
| ||||
@ManyToOne
@JoinColumn(name = "automaker_id")
public Automaker getAutomaker() {
return automaker;
}
public void setAutomaker(Automaker automaker) {
this.automaker = automaker;
} |
Entity Automaker - Durch die übernommene Einstellung Bidirectional wird gleichzeitig die Klasse Automaker um eine Liste mit allen Carmodels erweitert.
Code Block | ||||
---|---|---|---|---|
| ||||
@OneToMany(mappedBy = "automaker")
public List<Carmodel> getCarmodels() {
return carmodels;
}
public void setCarmodels(List<Carmodel> carmodels) {
this.carmodels = carmodels;
}
public Carmodel addCarmodel(Carmodel carmodel) {
getCarmodels().add(carmodel);
carmodel.setAutomaker(this);
return carmodel;
}
public Carmodel removeCarmodel(Carmodel carmodel) {
getCarmodels().remove(carmodel);
carmodel.setAutomaker(null);
return carmodel;
} |
Hinweis:
n:m Relation
- Legen Sie ein neues Entity Extra an.
- Wählen Sie im Menü File > New > Entity.
- Geben Sie bei Entity > Name die Bezeichnung Extra an und klicken Sie auf Finish.
- Klicken Sie im folgenden Entity-Editor auf Add Attribute, geben Sie bei Name die Bezeichnung extra ein und übernehmen Sie bei Type den Datentyp String.
Klicken Sie auf Speichern.
- Legen Sie ein neues Entity Car an.
Wählen Sie im Menü File > New > Entity.
- Geben Sie bei Entity > Name die Bezeichnung Car an und klicken Sie auf Finish.
- Definieren Sie eine n:1 Relation zwischen den Entities Carmodel und Car.
- Klicken Sie im Project Manager bei Entities auf Carmodel.java und ziehen Sie dieses Entity per Drag-and-drop in den Entity-Editor.
- Wählen Sie im folgenden Dialog die Option Many to One (n:1 - Each Carmodel has many Cars) an.
- Klicken Sie auf Ok.
- Klicken Sie auf Speichern.
- Fügen Sie mit Add Attribute einige weitere Attribute hinzu:
- registration vom Typ Date
- mileage vom Typ Integer
- kw vom Typ Integer
- price vom Typ Double
- Definieren Sie eine n:m Relaion zwischen den Entities Car und Extra.
- Klicken Sie im Project Manager bei Entities auf Extra.java und ziehen Sie dieses Entity per Drag-and-drop in den Entity-Editor.
- Wählen Sie im folgenden Dialog die Option Many to Many (n:m - Each Car has many Extras and each Extra has many Cars).
- Übernehmen Sie die Einstellung Bidirectional mit dem vorgeschlagenen Namen für die Join Table, die in der Datenbank für die Abbildung einer n:m Relation benötigt wird.
static CustomerDAO INSTANCE = new CustomerDAO(); public CustomerDAO() { super(Customer.class); } }
- Entity-Editor - Im Entity-Editor wird das neue Entity Customer angezeigt und kann editiert werden.
Tipps:
Attribute - Beim Hinzufügen von Attributen wie name, werden in der Entity Klasse neben der Variable name die Get-Methode getName sowie die Set-Methode setName generiert, mit denen auf die Variable name zugegriffen wird. Die Methoden get und set werden als Getter und Setter bezeichnet.
Code Block language java theme Confluence private String name;
...
@Column(name = "`name`") public String getName() { return name; }
...
...
public void setName(String
...
noname) { this.name =
...
noname; }
- Int oder Integer - Es ist empfehlenswert für die Attribute Ihrer Entities Typ-Klassen wie Integer zu verwenden, da primitive Datentypen wie int keinen Null Wert annehmen können, der jedoch in relationalen Datenbanken häufig verwendet wird.
- Fehlende Java Datentypen - Für die in den Entities verwendeten Java Datentypen werden beim Generieren der Datenbank automatisch entsprechend geeignete Datenbank Datentypen verwendet.
- Änderungen am Quellcode werden erkannt - Der Entity Editor ermöglicht Ihnen bidirektionales Arbeiten. Nach jeder einzelnen Änderungen, die Sie im Entity Editor vornehmen, wird automatisch der Quellcode angepasst. Umgekehrt werden nach Änderungen am Quellcode automatisch der Entity-Editor aktualisiert.
...