Hibernateの基本



昨日カルマを私に投げてくれた人への感謝の言葉から始めて、彼らが私の個人的なブログに書くことを許可したい。

私は「最初の」トピックを何に書くかについて長い間考えていました...最初のトピックが実際に既にあったので、最初の単語が引用符で囲まれているのは無駄ではありませんでした。 copyもう貼り付けないことを決めました。 私たち自身のものを書く必要があるという自信はこのトピックによって与えられました。 私はしっかりと決めました-それはまれですが、私はそれを自分で書きます。

さあ、先に進みましょう!

最近では、私の活動の性質上、 ORM (英語のオブジェクトリレーショナルマッピング)などの概念に出くわす必要がありました。 簡単に言えば、ORMはオブジェクト指向言語のオブジェクトをリレーショナルデータベースの構造にマッピングすることです。 それは、すべてのフィールド、値、関係m / yが相互に関係するオブジェクトです。

Java言語のORMソリューションはHibernateテクノロジーであり、Javaクラスとデータベーステーブル(およびJavaデータ型とSQLデータ型)の接続を処理するだけでなく、クエリを自動的に作成してデータを取得するツールを提供し、時間を大幅に削減できます開発。通常、SQLおよびJDBCコードの手動での作成に費やされます。 Hibernateは、SQL呼び出しを生成し、開発者が結果のデータセットを手動で処理したりオブジェクトを変換したりすることなく、アプリケーションをすべてのSQLデータベースに移植できるようにします。

そのため、Hibernateテクノロジーを使用してデータベースとの簡単な対話を実行する小さなアプリケーションを作成するタスクに直面しています。

少し考えてから、いわゆる「仮想艦隊」を書くことにしました。 公園の本質はこれです。バスがあり、ルートがあり、運転手がいます。 バスとルートは1対多の関係で接続されています。 複数のバスが一度に同じルートに乗ることができます。 ドライバーとバスは多対多、つまり 1つのドライバーが異なるバスを駆動でき、1つのバスが異なるドライバーを駆動できます。 複雑なことは何もないようです。
これがデータベーススキーマです。

品質をscらないでください-手元にタブレットを描く通常のツールはありませんでした...
これは、ベースから取得したダンプへのリンクです。突然誰かが全部を上げることに決めました:)
コードにアクセスします。 最初に、エンティティのクラス、つまり クラスバス、ドライバー、ルート。
クラスバス。
パッケージロジック;

import java.util.Set;
import java.util.HashSet;

パブリック クラスバス{
プライベートロングID;
プライベート 文字列番号。
private Set drivers = new HashSet();
private Long route_id;

公共バス(){
}
public void setId(Long id){
this .id = id;
}
public void setNumber( 文字列番号){
this .nu​​mber = number;
}
public void setDrivers(ドライバーの設定){
this .drivers = drivers;
}
public void setRoute_id(長いroute_id){
this .route_id = route_id;
}
public Long getId(){
戻り ID;
}
public String getNumber(){
戻り番号;
}
public Set getDrivers(){
リターンドライバー;
}
public Long getRoute_id(){
return route_id;
}
} *このソースコードは、 ソースコードハイライターで強調表示されています。

クラスドライバー。
パッケージロジック;

import java.util.Set;
import java.util.HashSet;

パブリック クラスドライバー{
プライベートロングID;
プライベート 文字列名。
プライベート 文字列の姓;
プライベート 整数年齢;
プライベートセットバス= new HashSet();

パブリックドライバー(){
}
public void setBusses(バスの設定){
this .busses = busses;
}
public Set getBusses(){
帰りのバス;
}
public void setId(Long id){
this .id = id;
}
public void setName( 文字列名){
this .name = name;
}
public void setSurname( String surname){
this .surname = surname;
}
public void setAge( int age){
this .age = age;
}
public Long getId(){
戻り ID;
}
public String getName(){
名前を返す ;
}
public String getSurname(){
姓を返す ;
}
public int getAge(){
返還年齢;
}
} *このソースコードは、 ソースコードハイライターで強調表示されています。

そしてクラスルート。
パッケージロジック;

import java.util.Set;
import java.util.HashSet;

パブリック クラスルート{
プライベートロングID;
プライベート 文字列名。
プライベート 整数番号。
プライベートセットバス= new HashSet();

パブリックルート(){
}
public void setId(Long id){
this .id = id;
}
public void setName( 文字列名){
this .name = name;
}
public void setNumber( int number){
this .nu​​mber = number;
}
public void setBusses(バスの設定){
this .busses = busses;
}
public Long getId(){
戻り ID;
}
public String getName(){
名前を返す ;
}
public int getNumber(){
戻り番号;
}
public Set getBusses(){
帰りのバス;
}
} *このソースコードは、 ソースコードハイライターで強調表示されています。

すべてのエンティティクラスはJavaの命名規則に準拠する必要があることに注意してください。 ゲッター、セッター、およびデフォルトコンストラクターが必要です。 複雑なことはありません:)

クラスの場合、 xml-ファイルの形式でマッピングを記述する必要があります。これらのファイルは、オブジェクトとHibernateおよびデータベースとの相互作用を担当します。
Bus.hbm.xml
< hibernate-mapping >
< クラス = "logic.Bus" テーブル = "busses " >
< id column = "bus_id" name = "id" type = "java.lang.Long" >
< generator class = "increment" />
</ id >
< プロパティ = "number" name = "number" type = "java.lang.String" />

< set name = "drivers" table = "busDriver" lazy = "false" >
< キー = "bus_id" />
< 多対多の = "driver_id" クラス = "logic.Driver" />
</ 設定 >

</ クラス >
</ hibernate-mapping > *このソースコードは、 ソースコードハイライターで強調表示されました。


Driver.hbm.xml
< hibernate-mapping >
< クラス = "logic.Driver" テーブル = "ドライバー" >
< id column = "driver_id" name = "id" type = "java.lang.Long" >
< generator class = "increment" />
</ id >
< プロパティ = "name" name = "name" type = "java.lang.String" />
< プロパティ = "surname" name = "surname" type = "java.lang.String" />
< プロパティ =「年齢」 名前 =「年齢」 タイプ =「java.lang.Integer」 />

< set name = " busses" table = "busDriver" lazy = "false" >
< キー = "driver_id" />
< 多対多の = "bus_id" クラス = "logic.Bus" />
</ 設定 >

</ クラス >
</ hibernate-mapping > *このソースコードは、 ソースコードハイライターで強調表示されました。

Route.hbm.xml
< hibernate-mapping >
< クラス = "logic.Route" テーブル = "ルート" >
< id column = "route_id" name = "id" type = "java.lang.Long" >
< generator class = "increment" />
</ id >
< プロパティ = "name" name = "name" type = "java.lang.String" />
< プロパティ = "number" name = "number" type = "java.lang.Integer" />

< set name = "busses" lazy = "false" >
< キー = "route_id" />
< 1対多 クラス = "logic.Bus" />
</ 設定 >

</ クラス >
</ hibernate-mapping > *このソースコードは、 ソースコードハイライターで強調表示されました。

では、これらのxmlパスタを見てみましょう:)


ここで、メイン構成ファイルhibernate.cfg.xmlを作成します。このファイルは、必要なすべての情報を取得する場所です。
< hibernate-configuration >

< セッションファクトリー >
< property name = "connection.url" > jdbc:mysql:// localhost / autopark </ property >
< プロパティ = "connection.driver_class" > com.mysql.jdbc.Driver </ プロパティ >
< プロパティ = "connection.username" >ルート</ プロパティ >
< プロパティ = "connection.password" />
< プロパティ = "connection.pool_size" > 1 </ プロパティ >
< プロパティ = "current_session_context_class" >スレッド</ プロパティ >
< プロパティ = "show_sql" > true </ プロパティ >
< property name = "dialect" > org.hibernate.dialect.MySQL5Dialect </ property >

< マッピング リソース = "logic / Bus.hbm.xml" />
< マッピング リソース = "logic / Driver.hbm.xml" />
< マッピング リソース = "logic / Route.hbm.xml" />

</ セッションファクトリ >

</ hibernate-configuration > *このソースコードは、 ソースコードハイライターで強調表示されました。

ここでは特に説明しません。多くの人がすべてを理解していると思います:) マッピングタグを最後に追加し、 binsの構成ファイルをリソースパラメーターとして指定することを忘れないでください。

ここで、設定ファイルを取得し 、Hibernateセッションの作成を担当するSessionFactory型のオブジェクトを返すクラスを作成します。
パッケージutil;

import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;

パブリック クラス HibernateUtil {
private static final SessionFactory sessionFactory;
static {
{
sessionFactory = new Configuration()。configure()。buildSessionFactory();
} catch (Throwable ex){
System.err.println( "最初のSessionFactoryの作成に失敗しました。" + Ex);
新しい ExceptionInInitializerError(ex)をスローします。
}
}

public static SessionFactory getSessionFactory(){
return sessionFactory;
}
} *このソースコードは、 ソースコードハイライターで強調表示されています。


ここで、アプリケーションとデータベースの相互作用を処理する必要があります。 これを行うには、各エンティティクラスに対して、必要なメソッドのセットを含むインターフェイスを定義します(他のクラスのインターフェイスと実装はこれらに類似しています)。
パッケージDAO;

import logic.Bus;
import logic.Driver;
import logic.Route;

import java.util.Collection;
import java.sql.SQLException;

パブリック インターフェイス BusDAO {
public void addBus(バスバス)はSQLExceptionをスローします。
public void updateBus(長いbus_id、バスバス)はSQLExceptionをスローします。
パブリックバスgetBusById(長いbus_id)はSQLExceptionをスローします。
public Collection getAllBusses()はSQLExceptionをスローします。
public void deleteBus(バスバス)はSQLExceptionをスローします。
public Collection getBussesByDriver(ドライバードライバー)はSQLExceptionをスローします。
public Collection getBussesByRoute(ルートルート)はSQLExceptionをスローします。

} *このソースコードは、 ソースコードハイライターで強調表示されています。


次に、クラスBusDAOImplでこのインターフェイスの実装を定義します
パッケージDAO.Impl;

import DAO.BusDAO;
import logic.Bus;
import logic.Driver;
import logic.Route;
import java.sql.SQLException;
import java.util.Collection;
java.utilをインポートします。 ArrayList ;
java.utilをインポートします。 一覧
import util.HibernateUtil;
import javax.swing。*;
import org.hibernate.Session;
import org.hibernate.Query;

パブリック クラス BusDAOImplはBusDAOを実装します{

public void addBus(バスバス)throws SQLException {
セッションsession = null ;
{
session = HibernateUtil.getSessionFactory()。openSession();
session.beginTransaction();
session.save(バス);
session.getTransaction()。commit();
} catch (例外e){
JOptionPane.showMessageDialog( null 、e.getMessage()、 " Insert error" 、JOptionPane.OK_OPTION);
} 最後に {
if (session!= null && session.isOpen()){

session.close();
}
}
}

public void updateBus(長いbus_id、バスバス)がSQLExceptionをスローします{
セッションsession = null ;
{
session = HibernateUtil.getSessionFactory()。openSession();
session.beginTransaction();
session.update(バス);
session.getTransaction()。commit();
} catch (例外e){
JOptionPane.showMessageDialog( null 、e.getMessage()、 " Insert error" 、JOptionPane.OK_OPTION);
} 最後に {
if (session!= null && session.isOpen()){
session.close();
}
}
}

パブリックバスgetBusById(長いbus_id)がSQLExceptionをスローします{
セッションsession = null ;
バスbus = null ;
{
session = HibernateUtil.getSessionFactory()。openSession();
bus =(バス)session.load(バスクラス 、bus_id);
} catch (例外e){
JOptionPane.showMessageDialog( null 、e.getMessage()、 "Error 'findById'" 、JOptionPane.OK_OPTION);
} 最後に {
if (session!= null && session.isOpen()){
session.close();
}
}
復路バス;
}

public Collection getAllBusses()throws SQLException {
セッションsession = null ;
バスのリスト = new ArrayList <Bus>();
{
session = HibernateUtil.getSessionFactory()。openSession();
busses = session.createCriteria(バスクラス ).list();
} catch (例外e){
JOptionPane.showMessageDialog( null 、e.getMessage()、 "Error 'getAll'" 、JOptionPane.OK_OPTION);
} 最後に {
if (session!= null && session.isOpen()){
session.close();
}
}
帰りのバス;
}

public void deleteBus(バスバス)がSQLExceptionをスローします{
セッションsession = null ;
{
session = HibernateUtil.getSessionFactory()。openSession();
session.beginTransaction();
session.delete(バス);
session.getTransaction()。commit();
} catch (例外e){
JOptionPane.showMessageDialog( null 、e.getMessage()、 “ Error deleted 、JOptionPane.OK_OPTION);
} 最後に {
if (session!= null && session.isOpen()){
session.close();
}
}
}

public Collection getBussesByDriver(ドライバードライバー)throws SQLException {
セッションsession = null ;
バスのリスト = new ArrayList <Bus>();
{
session = HibernateUtil.getSessionFactory()。getCurrentSession();
session.beginTransaction();
Long driver_id = driver.getId();
クエリquery = session.createQuery(
「bを選択」
+ 「Bus b INNER JOIN b.driversドライバーから」
+ "where driver.id =:driverId"

.setLong( "driverId" 、driver_id);
busses =( List <Bus>)query.list();
session.getTransaction()。commit();

} 最後に {
if (session!= null && session.isOpen()){
session.close();
}
}
帰りのバス;
}

public Collection getBussesByRoute(ルートルート){
セッションsession = null ;
バスのリスト = new ArrayList <Bus>();
{
session = HibernateUtil.getSessionFactory()。getCurrentSession();
session.beginTransaction();
長いroute_id = route.getId();
クエリquery = session.createQuery( "bus from route_id =:routeId" ).setLong( "routeId" 、route_id);
busses =( List <Bus>)query.list();
session.getTransaction()。commit();

} 最後に {
if (session!= null && session.isOpen()){
session.close();
}
}
帰りのバス;
}

} *このソースコードは、 ソースコードハイライターで強調表示されています。


また、 DriverDAOImplRouteDAOImplの実装もこれに似ていると言います。
私たちにとって最も興味深いのは、最後の2つの方法です。詳しく見てください。 データベースとの通信はどうですか? SessionFactoryオブジェクトから新しいセッションが作成されるか、現在のセッションが取得されます。これにより、トランザクションが開始され、必要なアクションが実行され、トランザクションがコミットされ、セッションが閉じられます。 複雑なことはないようです:)構文がデータベースへのクエリを記述する方法に注意してください。 これはいわゆるHQL (Hibernate Query Language)です。HQLはオブジェクト指向のクエリ言語であり、その機能は幅広いですが、まだそれほど広くマスターされていません:) 保存読み込み更新削除HQLに加えて 、通常のSQLを使用できます 。 例:
String query = "SELECT driver_id, name, surname, age FROM drivers";
List drivers = new ArrayList();
drivers = (List) session.createSQLQuery(query).list();



, DAO , .
public class Factory {

private static BusDAO busDAO = null ;
private static DriverDAO driverDAO = null ;
private static RouteDAO routeDAO = null ;
private static Factory instance = null ;

public static synchronized Factory getInstance(){
if (instance == null ){
instance = new Factory();
}
return instance;
}

public BusDAO getBusDAO(){
if (busDAO == null ){
busDAO = new BusDAOImpl();
}
return busDAO;
}

public DriverDAO getDriverDAO(){
if (driverDAO == null ){
driverDAO = new DriverDAOImpl();
}
return driverDAO;
}

public RouteDAO getRouteDAO(){
if (routeDAO == null ){
routeDAO = new RouteDAOImpl();
}
return routeDAO;
}
}
* This source code was highlighted with Source Code Highlighter .

- , , , . , , , , :)
public class Main {
public static void main( String [] args) throws SQLException {

Collection routes = Factory.getInstance().getRouteDAO().getAllRoutes();
Iterator iterator = routes.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Route route = (Route) iterator.next();
System. out .println( " : " + route.getName() + " : " + route.getNumber());
Collection busses = Factory.getInstance().getBusDAO().getBussesByRoute(route);
Iterator iterator2 = busses.iterator();
while (iterator2.hasNext()) {
Bus bus = (Bus) iterator2.next();
System. out .println( " № " + bus.getNumber());

}
}

Collection busses = Factory.getInstance().getBusDAO().getAllBusses();
iterator = busses.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Bus bus = (Bus) iterator.next();
Collection drivers = Factory.getInstance().getDriverDAO().getDriversByBus(bus);
Iterator iterator2 = drivers.iterator();
System. out .println( " № " + bus.getNumber());
while (iterator2.hasNext()) {
Driver driver = (Driver) iterator2.next();
System. out .println( " : " + driver.getName() + " : " + driver.getSurname());

}
}

}
}
* This source code was highlighted with Source Code Highlighter .
, , GUI Web- , :)

PS . , 100%- , , , - .

PSS .
String query = "SELECT driver_id, name, surname, age FROM drivers";
List drivers = new ArrayList();
drivers = (List) session.createSQLQuery(query).list();



, DAO , .
public class Factory {

private static BusDAO busDAO = null ;
private static DriverDAO driverDAO = null ;
private static RouteDAO routeDAO = null ;
private static Factory instance = null ;

public static synchronized Factory getInstance(){
if (instance == null ){
instance = new Factory();
}
return instance;
}

public BusDAO getBusDAO(){
if (busDAO == null ){
busDAO = new BusDAOImpl();
}
return busDAO;
}

public DriverDAO getDriverDAO(){
if (driverDAO == null ){
driverDAO = new DriverDAOImpl();
}
return driverDAO;
}

public RouteDAO getRouteDAO(){
if (routeDAO == null ){
routeDAO = new RouteDAOImpl();
}
return routeDAO;
}
}
* This source code was highlighted with Source Code Highlighter .

- , , , . , , , , :)
public class Main {
public static void main( String [] args) throws SQLException {

Collection routes = Factory.getInstance().getRouteDAO().getAllRoutes();
Iterator iterator = routes.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Route route = (Route) iterator.next();
System. out .println( " : " + route.getName() + " : " + route.getNumber());
Collection busses = Factory.getInstance().getBusDAO().getBussesByRoute(route);
Iterator iterator2 = busses.iterator();
while (iterator2.hasNext()) {
Bus bus = (Bus) iterator2.next();
System. out .println( " № " + bus.getNumber());

}
}

Collection busses = Factory.getInstance().getBusDAO().getAllBusses();
iterator = busses.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Bus bus = (Bus) iterator.next();
Collection drivers = Factory.getInstance().getDriverDAO().getDriversByBus(bus);
Iterator iterator2 = drivers.iterator();
System. out .println( " № " + bus.getNumber());
while (iterator2.hasNext()) {
Driver driver = (Driver) iterator2.next();
System. out .println( " : " + driver.getName() + " : " + driver.getSurname());

}
}

}
}
* This source code was highlighted with Source Code Highlighter .
, , GUI Web- , :)

PS . , 100%- , , , - .

PSS .
String query = "SELECT driver_id, name, surname, age FROM drivers";
List drivers = new ArrayList();
drivers = (List) session.createSQLQuery(query).list();



, DAO , .
public class Factory {

private static BusDAO busDAO = null ;
private static DriverDAO driverDAO = null ;
private static RouteDAO routeDAO = null ;
private static Factory instance = null ;

public static synchronized Factory getInstance(){
if (instance == null ){
instance = new Factory();
}
return instance;
}

public BusDAO getBusDAO(){
if (busDAO == null ){
busDAO = new BusDAOImpl();
}
return busDAO;
}

public DriverDAO getDriverDAO(){
if (driverDAO == null ){
driverDAO = new DriverDAOImpl();
}
return driverDAO;
}

public RouteDAO getRouteDAO(){
if (routeDAO == null ){
routeDAO = new RouteDAOImpl();
}
return routeDAO;
}
}
* This source code was highlighted with Source Code Highlighter .

- , , , . , , , , :)
public class Main {
public static void main( String [] args) throws SQLException {

Collection routes = Factory.getInstance().getRouteDAO().getAllRoutes();
Iterator iterator = routes.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Route route = (Route) iterator.next();
System. out .println( " : " + route.getName() + " : " + route.getNumber());
Collection busses = Factory.getInstance().getBusDAO().getBussesByRoute(route);
Iterator iterator2 = busses.iterator();
while (iterator2.hasNext()) {
Bus bus = (Bus) iterator2.next();
System. out .println( " № " + bus.getNumber());

}
}

Collection busses = Factory.getInstance().getBusDAO().getAllBusses();
iterator = busses.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Bus bus = (Bus) iterator.next();
Collection drivers = Factory.getInstance().getDriverDAO().getDriversByBus(bus);
Iterator iterator2 = drivers.iterator();
System. out .println( " № " + bus.getNumber());
while (iterator2.hasNext()) {
Driver driver = (Driver) iterator2.next();
System. out .println( " : " + driver.getName() + " : " + driver.getSurname());

}
}

}
}
* This source code was highlighted with Source Code Highlighter .
, , GUI Web- , :)

PS . , 100%- , , , - .

PSS .
String query = "SELECT driver_id, name, surname, age FROM drivers";
List drivers = new ArrayList();
drivers = (List) session.createSQLQuery(query).list();



, DAO , .
public class Factory {

private static BusDAO busDAO = null ;
private static DriverDAO driverDAO = null ;
private static RouteDAO routeDAO = null ;
private static Factory instance = null ;

public static synchronized Factory getInstance(){
if (instance == null ){
instance = new Factory();
}
return instance;
}

public BusDAO getBusDAO(){
if (busDAO == null ){
busDAO = new BusDAOImpl();
}
return busDAO;
}

public DriverDAO getDriverDAO(){
if (driverDAO == null ){
driverDAO = new DriverDAOImpl();
}
return driverDAO;
}

public RouteDAO getRouteDAO(){
if (routeDAO == null ){
routeDAO = new RouteDAOImpl();
}
return routeDAO;
}
}
* This source code was highlighted with Source Code Highlighter .

- , , , . , , , , :)
public class Main {
public static void main( String [] args) throws SQLException {

Collection routes = Factory.getInstance().getRouteDAO().getAllRoutes();
Iterator iterator = routes.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Route route = (Route) iterator.next();
System. out .println( " : " + route.getName() + " : " + route.getNumber());
Collection busses = Factory.getInstance().getBusDAO().getBussesByRoute(route);
Iterator iterator2 = busses.iterator();
while (iterator2.hasNext()) {
Bus bus = (Bus) iterator2.next();
System. out .println( " № " + bus.getNumber());

}
}

Collection busses = Factory.getInstance().getBusDAO().getAllBusses();
iterator = busses.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Bus bus = (Bus) iterator.next();
Collection drivers = Factory.getInstance().getDriverDAO().getDriversByBus(bus);
Iterator iterator2 = drivers.iterator();
System. out .println( " № " + bus.getNumber());
while (iterator2.hasNext()) {
Driver driver = (Driver) iterator2.next();
System. out .println( " : " + driver.getName() + " : " + driver.getSurname());

}
}

}
}
* This source code was highlighted with Source Code Highlighter .
, , GUI Web- , :)

PS . , 100%- , , , - .

PSS .
String query = "SELECT driver_id, name, surname, age FROM drivers";
List drivers = new ArrayList();
drivers = (List) session.createSQLQuery(query).list();



, DAO , .
public class Factory {

private static BusDAO busDAO = null ;
private static DriverDAO driverDAO = null ;
private static RouteDAO routeDAO = null ;
private static Factory instance = null ;

public static synchronized Factory getInstance(){
if (instance == null ){
instance = new Factory();
}
return instance;
}

public BusDAO getBusDAO(){
if (busDAO == null ){
busDAO = new BusDAOImpl();
}
return busDAO;
}

public DriverDAO getDriverDAO(){
if (driverDAO == null ){
driverDAO = new DriverDAOImpl();
}
return driverDAO;
}

public RouteDAO getRouteDAO(){
if (routeDAO == null ){
routeDAO = new RouteDAOImpl();
}
return routeDAO;
}
}
* This source code was highlighted with Source Code Highlighter .

- , , , . , , , , :)
public class Main {
public static void main( String [] args) throws SQLException {

Collection routes = Factory.getInstance().getRouteDAO().getAllRoutes();
Iterator iterator = routes.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Route route = (Route) iterator.next();
System. out .println( " : " + route.getName() + " : " + route.getNumber());
Collection busses = Factory.getInstance().getBusDAO().getBussesByRoute(route);
Iterator iterator2 = busses.iterator();
while (iterator2.hasNext()) {
Bus bus = (Bus) iterator2.next();
System. out .println( " № " + bus.getNumber());

}
}

Collection busses = Factory.getInstance().getBusDAO().getAllBusses();
iterator = busses.iterator();
System. out .println( "======== =========" );
while (iterator.hasNext()) {
Bus bus = (Bus) iterator.next();
Collection drivers = Factory.getInstance().getDriverDAO().getDriversByBus(bus);
Iterator iterator2 = drivers.iterator();
System. out .println( " № " + bus.getNumber());
while (iterator2.hasNext()) {
Driver driver = (Driver) iterator2.next();
System. out .println( " : " + driver.getName() + " : " + driver.getSurname());

}
}

}
}
* This source code was highlighted with Source Code Highlighter .
, , GUI Web- , :)

PS . , 100%- , , , - .

PSS .

Source: https://habr.com/ru/post/J29694/


All Articles