3層の最適化:
MVCと3層構造の比較:
1.3層アーキテクチャ
これは、MVCデザインパターンの目標と一致しています。すべては、結合を理解し、コードの再利用を改善することです。
違いは、2つはプロジェクトの理解に関して異なる視点を持っています。
2. 3層構成:
プレゼンテーション層(USL、ユーザー表示層、表示層)
a。フォアグラウンド:MVCのビューに対応します。これは、ユーザーと対話し、インターフェイスを表示するために使用されます。
jsp js html css jqueryおよびその他のWebフロントエンドテクノロジーコードの場所:WebContent
b。背景:MVCのコントローラーの場合、ジャンプを制御し、ビジネスロジックレイヤーを呼び出すために使用されます
サーブレット(SpringMVC Struts2)、xxxにあります。サーブレットパッケージは
ビジネスロジック層(BLL、ビジネスロジック層、サービス層)
a。プレゼンテーション層の要求呼び出しを受信します
b。データアクセス層の組み立て、論理演算(追加、削除、変更、削除:チェック+削除)、
通常、XXX。サービスパッケージにあります(XXX。manager、XX。bllになることもできます)
データアクセス層(DAL、データアクセス層、Dao層)
a。データベース操作、アトミック操作(追加、削除、変更、およびチェック)への直接アクセス
通常、XXX.daoパッケージに含まれています
3. 3つのレイヤー間の関係:
上位層は要求を下位層に渡し、下位層はそれを処理して上位層に返します。
上位層は下位層に依存し、コードの理解、つまりメンバー変数を保持することに依存します。Aの前提にはBが必要です。
Daoレイヤーはデータベースがある場合にのみ可能であるため、Daoレイヤーはデータベースに依存します。
1.インターフェイス
を追加するための推奨事項指向開発:最初のインターフェイス-次に実装クラス-
サービス、dao結合インターフェイス
-インターフェイスおよび実装クラス命名規則
インターフェイス:インターフェイス、名前付きIエンティティクラスサービスIStudentService
IStudentDao
実装クラス:名前付きエンティティクラスを実装ServiceImpl
StudentServiceImplStudentDaoImpl
インターフェイス:IエンティティクラスレイヤーIStudentServiceのパッケージ名
、IStudentDao インターフェイスが配置されているパッケージ:xxx.service xx.dao
実装クラス:エンティティクラスレイヤーのパッケージ名はImpl StudentServiceImplで
あり、StudentDaoImpl実装クラスが配置されているパッケージはxxx.service.implxx.dao.implです。
将来、インターフェイス/実装クラスを使用する場合は、次のように記述することをお勧めし
ます
。interfacex = newimplementation class(); IStudentDao studentDao = new StudentDaoImpl();
2.Daoレイヤーのコード量を簡素化できるDBUtil汎用データベースヘルパークラス
ヘルプクラスは通常、xxx.utilパッケージで作成することをお勧めします
A
{
a(){ B.connection } }
B
{ 静的接続接続= .. b { } }
メソッドのリファクタリング:複数のメソッドの共通コードを抽出し、それらをメソッドに個別に記述してから、メソッド
a()
{ .. c(); .. }を導入します。
b()
{ .. c(); .. }
c()
{ [.. .. ... ..] }
Webデバッグ:
Javaコードを使用したデバッグの違い:起動方法が異なります
index.jsp-> index_jsp.java-> index_jsp.class
jsp-> java-> class
JspはJavaに変換され、コンパイルされたクラスファイルはtomcatの作業ディレクトリに存在します
10000
ページネーション:5つの変数(属性)
1.総データ数(xxxからcount(*)を選択、データベースを確認)
2。ページサイズ(ページ容量、各ページに表示されるデータ項目数)(ユーザー定義)
3。総ページ数(自動計算)
800:10 =
合計80ページ=合計データ/ページサイズ
802:10 = 800/10 +1;
総ページ数=データの総数/ページサイズ+1;
->一般式
総ページ数=総データ数%ページサイズ== 0?総データ数/ページサイズ:総データ数/ページサイズ+1;
注:自動計算のタイミング:データの総数とページサイズが割り当てられると、ページの総数が自動的に計算されます。
4.現在のページ番号(ユーザー定義)
5.エンティティオブジェクトコレクション(現在のページのデータ収集):データベースに依存します(データベースを確認します)
前提条件:ページあたり10アイテム(ページサイズ= 10)
select * from student where id> = start and id <= end;
開始ページ数と終了ページ数開始と終了の同等の書き込み
11-10(ページ数-1)* 10 + 1-ページ数* 10
2 11-20
3 21-30
データのページの開始と終了:
(ページ数-1)* 10 + 1-ページ数* 10
select * from student where sno> =(number of pages-1)* 10 + 1 and sno <= number of pages * 10;
この種のページングSQLは、snoのデータに厳密に依存します。ギャップ(クラック)が発生すると、 snoでは、すべてを満足させることはできません。
->このSQL変換:1。rownumがあります2
はrownum> xx変換のコアを持つことはできません:rownumを疑似列から一時テーブルの通常の列に変換します。
select * from
(
select rownum r、t。* from
(selects 。* from student s order by sno asc)t
)where r> =(页数-1)* 10 +1およびr <=页数* 10;
最適化:
select * from(
select rownum r、t。* from
(selects 。* from student s order by sno asc)t
where rownum <= page number * page size
)where r> =(page number-1)* page size + 1 ;
1
2
3
6
7
8
9
...
11
12
13
..
21
22
23
.。
daoとDBUtilの違い:
daoは、特定のクラスを処理するデータベース操作クラスです
。DBUtilは、一般的なデータベース操作クラスです。