λͺ©λ‘π» Java Study (32)
Coding Planet
μΉ νλ‘κ·Έλλ°μ 곡λΆνλ©΄μ μ§λ¦¬κ² λ£κ² λλ νμΌ νμμ΄λ€. JAR νμΌκ³Ό WAR νμΌμ λ λ€ Java κΈ°λ°μ μ ν리μΌμ΄μ μ ν¨ν€μ§νκΈ° μν νμΌ ν¬λ§·μ΄λ€. 1. Jar(Java ARchive)νμΌ μ μ: JAR νμΌμ μ¬λ¬ κ°μ Java ν΄λμ€ νμΌ, λ©ν λ°μ΄ν°, 리μμ€ νμΌ λ±μ νλμ νμΌλ‘ λ¬Άμ μμΉ΄μ΄λΈ νμΌ λͺ©μ : Java ν΄λμ€μ κ΄λ ¨ 리μμ€λ₯Ό ν¨ν€μ§νμ¬ μ¬μ¬μ© κ°λ₯ν λΌμ΄λΈλ¬λ¦¬λ μ€ν κ°λ₯ν μ ν리μΌμ΄μ μ μμ± μ¬μ©μ²: Java λΌμ΄λΈλ¬λ¦¬, μ€ν λμΌλ‘ Java μ ν리μΌμ΄μ , μμ‘΄μ± ν¨ν€μ§ λ± νμ₯μ: .jar 2. WAR (Web Application aRchive) νμΌ μ μ: WAR νμΌμ μΉ μ ν리μΌμ΄μ μ ν¨ν€μ§νκΈ° μν νμΌ ν¬λ§·μ΄λ€. Java ν΄λμ€, JSP, μλΈλ¦Ώ, XML, ..
μμ΄ν 6 : λΆνμν κ°μ²΄ μμ±μ νΌνλΌ λκ°μ κΈ°λ₯μ κ°μ²΄λ₯Ό λ§€λ² μμ±ν기보λ€λ κ°μ²΄ νλλ₯Ό μ¬μ¬μ©νλ νΈμ΄ λμ λκ° λ§λ€. μ¬μ¬μ©μ λΉ λ₯΄κ³ μΈλ ¨λλ€. 1. String Instanceμ μμ (1) 'new' ν€μλλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ κ°μ²΄λ₯Ό λͺ μμ μΌλ‘ μμ±ν κ²½μ° λ¬Έμμ΄μ heap μμ¬κ²‘ μ μ₯λλ©° μλ λ¬Έμ₯μ΄ μ€νλ λ λ§λ€ String μΈμ€ν΄μ€λ₯Ό μλ‘ λ§λ λ€. String s = new String("Effective Java"); (2) String Constant Pool String Constant Poolμ Javaμ λ©λͺ¨λ¦¬ μμ μ€ νλλ‘, λ¬Έμμ΄ λ¦¬ν°λ΄μ μ μ₯νλ νΉλ³ν μμμ΄λ€. Javaμμ λ¬Έμμ΄μ λΆλ³(immutable)νκΈ° λλ¬Έμ, λ κ° μ΄μμ λμΌν λ¬Έμμ΄ λ¦¬ν°λ΄μ λ©λͺ¨λ¦¬μ ..
μ§μ° μ΄κΈ°ν (Lazy Initialization)λ κ°μ²΄, λ°μ΄ν° λλ κ³μ° λΉμ©μ΄ ν° λ¦¬μμ€μ μ΄κΈ°νλ₯Ό κ·Έκ²μ΄ μ€μ λ‘ νμν λκΉμ§ μ§μ°μν€λ νλ‘κ·Έλλ° κΈ°λ²μ λλ€. μ¦, κ°μ²΄λ λ°μ΄ν°λ₯Ό μμ±νλ μμ μ΄ λ°μνλ μκ°μ΄ μλλΌ, κ·Έκ²μ΄ μ€μ λ‘ μ κ·Όλκ±°λ μ¬μ©λ λκΉμ§ μ΄κΈ°νλ₯Ό μ°κΈ°νλ κ²μ μλ―Έν©λλ€. μ§μ° μ΄κΈ°νμ μ£Όμ λͺ©μ μ±λ₯ μ΅μ ν: μ΄κΈ° λ‘λ© μκ°μ λ¨μΆνκ±°λ, λΆνμν 리μμ€ μμ±μ λ°©μ§νμ¬ μμ€ν μ μ λ°μ μΈ μ±λ₯μ ν₯μμν¨λ€. 리μμ€ μ μ½: μ€μ λ‘ μ¬μ©λμ§ μλ κ°μ²΄λ λ°μ΄ν°λ₯Ό μμ±νμ§ μμ λ©λͺ¨λ¦¬λ κΈ°ν 리μμ€λ₯Ό μ μ½ν μ μλ€. μ§μ° μ΄κΈ°νμλ μ£Όμμ¬ν μ€λ λ μμ μ±: μ¬λ¬ μ€λ λμμ λμμ μ§μ° μ΄κΈ°ν λ‘μ§μ μ κ·Όν κ²½μ° λκΈ°ν λ¬Έμ κ° λ°μν μ μλ€. μ΄λ₯Ό λ°©μ§νκΈ° μν΄μλ μ μ ν..
μμ΄ν 5: μμμ λͺ μνμ§ λ§κ³ μμ‘΄ κ°μ²΄ μ£Όμ μ μ¬μ©νλΌ μ΄μ μ μ΄ν΄λ³Έ μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ±κΈν΄ λ°©μμ μ¬μ©νλ μμμ λ°λΌ λμμ΄ λ¬λΌμ§λ ν΄λμ€μλ μ ν©νμ§ μλ€. μ μ μ νΈλ¦¬ν° ν΄λμ€λ μνλ₯Ό κ°μ§ μ μλ€. μ¦ μμμ λ°λΌ λμμ λ³κ²½νλ κ²μ΄ μ΄λ ΅λ€. μ±κΈν΄μ μ μ μνλ₯Ό κ°μ§κ² λλ―λ‘ μ¬λ¬ μμμ κ΄λ¦¬νκ±°λ λμμ λμ μΌλ‘ λ³κ²½νκΈ° μ΄λ ΅κ² λ§λ λ€. λν μ μ μ νΈλ¦¬ν° ν΄λμ€λ μ±κΈν΄μ μμμ ν΅ν νμ₯μ΄ μ΄λ ΅κ³ ν μ€νΈλ μ΄λ ΅λ€λ λ¨μ μ΄ μλ€. λ°λΌμ β ν΄λμ€κ° μ¬λ¬ μμ μΈμ€ν΄μ€λ₯Ό μ§μν΄μΌνκ³ , β‘ ν΄λΌμ΄μΈνΈκ° μνλ μμμ μ¬μ©ν΄μΌνλ 쑰건μ λ§μ‘±νλ €λ©΄ μΈμ€ν΄μ€λ₯Ό μμ±ν λ μμ±μμ νμν μμμ λ겨주λ λ°©μμΈ μμ‘΄ κ°μ²΄ μ£Όμ μ΄ μ ν©νλ€. 1. μμ‘΄ κ°μ²΄ μ£Όμ (Dependency I..
μμ΄ν 4: μΈμ€ν΄μ€νλ₯Ό λ§μΌλ €κ±°λ private μμ±μλ₯Ό μ¬μ©νλΌ μΈμ€ν΄μ€ν(instance instantiation)λ ν΄λμ€μ μ μλ₯Ό κΈ°λ°μΌλ‘ μ€μ κ°μ²΄λ₯Ό λ©λͺ¨λ¦¬μ μμ±νλ κ³Όμ μ΄λ€. ν΄λμ€μ μΈμ€ν΄μ€νλ₯Ό λ§κΈ°μν΄ private μμ±μλ₯Ό μ¬μ©νλ κ²μ ν΄λμ€λ₯Ό μΈλΆμμ μΈμ€ν΄μ€ννλ κ²μ λ°©μ§νκΈ° μν ν ν¬λμ΄λ€. ν΄λμ€μ μ μλ μμ±μκ° λͺ¨λ 'private'μΌλ‘ μ μΈλλ©΄, κ·Έ ν΄λμ€λ μΈλΆμμ κ°μ²΄λ₯Ό μμ±ν μ μκ² λλ€. μ΄λ¬ν μ κ·Ό μ νμλ₯Ό μ¬μ©νλ κ²μ μ£Όλ‘ μ νΈλ¦¬ν° ν΄λμ€λ μμλ§μ ν¬ν¨νλ ν΄λμ€μ κ°μ΄ μΈμ€ν΄μ€νλ νμκ° μλ ν΄λμ€λ€μ μ μ©λλ€. 1. μ μ λ©μλμ μ μ νλλ§μ λ΄μ μ νΈμ± ν΄λμ€λ λ§λλ κ²½μ° κΈ°λ³Έ νμ κ°μ΄λ λ°°μ΄ κ΄λ ¨ λ©μλλ€μ λͺ¨μλμ λ : java.lang..
μμ΄ν 3: private μμ±μλ μ΄κ±° νμ μΌλ‘ μ±κΈν΄μμ 보μ¦νλΌ μ±κΈν΄(sigleton)μ΄λ μΈμ€ν΄μ€λ₯Ό μ€μ§ νλλ§ μμ±ν μ μλ ν΄λμ€λ₯Ό λ§νλ€. μ±κΈν΄μ μ νμ μΈ μλ‘λ ν¨μμ κ°μ 무μν κ°μ²΄λ μ€κ³μ μ μΌν΄μΌνλ μμ€ν μ»΄ν¬λνΈλ₯Ό λ€ μ μλ€. κ·Έλ°λ° ν΄λμ€λ₯Ό μ±κΈν΄μΌλ‘ λ§λ€λ©΄ μ΄λ₯Ό μ¬μ©νλ ν΄λΌμ΄μΈνΈλ₯Ό ν μ€νΈνκΈ°κ° μ΄λ €μμ§ μ μλ€. νμ μ μΈν°νμ΄μ€λ‘ μ μν λ€μ κ·Έ μΈν°νμ΄μ€λ₯Ό ꡬνν΄μ λ§λ μ±κΈν΄μ΄ μλλΌλ©΄ μ±κΈν΄ μΈμ€ν΄μ€λ₯Ό κ°μ§(mock)ꡬνμΌλ‘ λ체ν μ μκΈ° λλ¬Έμ΄λ€. μ¦, ν΄λμ€λ₯Ό μ±κΈν΄μΌλ‘ λ§λ€ κ²½μ° ν΄λΉ ν΄λμ€μ μΈμ€ν΄μ€κ° μμ€ν μ 체μ νλμ΄κΈ° λλ¬Έμ ν μ€νΈμ μ€μ νκ²½μμμ λμμ΄ κ°νκ² κ²°ν©λ μ μλ€. μ±κΈν΄μ λ§λλ λ°©λ²μ λ³΄ν΅ λκ°μ§μ΄λ€. λ λ°©μ λͺ¨λ μμ±μλ ..
1. μ§λ ¬νλ (Serialization)? μ§λ ¬ν (Serialization)λ κ°μ²΄μ μνλ₯Ό λ°μ΄νΈ μ€νΈλ¦ΌμΌλ‘ λ³ννλ κ³Όμ μ μλ―Ένλ€. μ΄ λ°μ΄νΈ μ€νΈλ¦Όμ νμΌλ‘ μ μ₯νκ±°λ λ€νΈμν¬λ₯Ό ν΅ν΄ λ€λ₯Έ μμ€ν μ μ μ‘ν μ μλ€. λ°λλ‘, μμ§λ ¬ν (Deserialization)λ λ°μ΄νΈ μ€νΈλ¦Όμ λ€μ μλμ κ°μ²΄λ‘ λ³ννλ κ³Όμ μ μλ―Ένλ€. 2. μ§λ ¬νμ λͺ©μ μμμ± (Persistence): κ°μ²΄μ μνλ₯Ό μꡬ μ μ₯ 맀체 (μ: νμΌ)μ μ μ₯νκ³ λμ€μ λ€μ μ¬μ©νκΈ° μν΄ κ°μ²΄λ₯Ό 볡μν μ μλ€. μ격 νλ‘μμ νΈμΆ (Remote Procedure Call): κ°μ²΄λ₯Ό λ€νΈμν¬λ₯Ό ν΅ν΄ λ€λ₯Έ JVM λλ μμ€ν μΌλ‘ μ μ‘νλ €λ©΄ κ·Έ κ°μ²΄λ₯Ό λ°μ΄νΈ μ€νΈλ¦ΌμΌλ‘ λ³νν΄μΌ νλ€. κ°μ²΄μ κΉμ λ³΅μ¬ (Deep Copy)..
μμ΄ν 2 : μμ±μμ 맀κ°λ³μκ° λ§λ€λ©΄ λΉλλ₯Ό κ³ λ €νλΌ μ μ ν©ν 리μ μμ±μμλ λκ°μ μ μ½μ΄ νλ μλ€. μ νμ 맀κ°λ³μκ° λ§μ κ²½μ° μ μ ν λμνκΈ°κ° μ΄λ ΅λ€λ κ²μ΄λ€. κΈ°μ‘΄μ 맀κ°λ³μκ° λ§μ κ²½μ° κ³ λ €ν μ μλ λ°©μμ λ€μκ³Ό κ°λ€. λμ1. μ μΈ΅μ μμ±μ ν¨ν΄ μ μΈ΅μ μμ±μ ν¨ν΄(telescoping constructor pattern)μ΄λ κ°μ²΄ μμ± μ νμν μ‘°ν©μ λ°λΌ λ€μν μμ±μλ₯Ό μ 곡νλ κ²μ μλ―Ένλ€. νμ 맀κ°λ³μλ₯Ό λ°λμμ±μλ₯Ό λ¨Όμ μμ±νκ³ λ§€κ°λ³μ 1κ°λ₯Ό μΆκ°λ‘ λ°λ μμ±μ, μ ν λ§€κ° λ³μ 2κ°λ₯Ό μΆκ°λ‘ λ°λ μμ±μ λ±μ ννλ‘ λ§€κ°λ³μ κ°μλ§νΌ μμ±μλ₯Ό λλ €κ°λ λ°©μμ΄λ€. μ΄ ν¨ν΄μ μ£Όμν λ¬Έμ λ μ νμ 맀κ°λ³μμ μκ° λ§μμ§μλ‘ μμ±μμ μκ° κΈ°νκΈμμ μΌλ‘ λμ΄λκ² λλ©°, ν΄..
μμ΄ν 1 : μμ±μ λμ μ μ ν©ν 리 λ©μλλ₯Ό κ³ λ €νλΌ μμ±μ λμ λ°λμ μ μ λ©μλλ₯Ό μ¬μ©νλΌλ μλ―Έλ μλλ€. λμ λ°λΌ μ μ ν©ν 리 λ©μλκ° λμ± μ μ©ν κ²½μ° μ¬μ©μ κ³ λ €νλΌλ λ»μ΄λ€. 1. μ μ λ©μλμ μ₯μ μ΄λ¦μ κ°μ§ μ μλ€. μ μ ν©ν 리μ μ΄λ¦μ ν΅ν΄ λ°νλ κ°μ²΄μ νΉμ±μ μ½κ² λ¬μ¬ν μ μλ€. μ΄λ¦μ ν΅ν΄ λͺ μμ μ μΈμ΄ κ°λ₯ν΄ μ§λ κ²μ΄λ€. μμ±μμ μκ·Έλμ²κ° μ€λ³΅λλ κ²½μ° μ μ©νλ€. νΈμΆ λ λλ§λ€ μΈμ€ν΄μ€λ₯Ό μλ‘ μμ±νμ§ μμλ λλ€. λΆλ³ ν΄λμ€μΈ κ²½μ°λ λ§€λ² μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€ νμκ° μλ κ²½μ°μ 미리 λ§λ€μ΄λ μΈμ€ν΄μ€ λλ μΊμν΄λ μΈμ€ν΄μ€λ₯Ό λ³κ²½ν μ μλ€. λ°ν νμ μ νμ νμ κ°μ²΄λ₯Ό λ°νν μ μλ€. μ μ ν©ν 리 λ©μλλ μμ±μμ λ¬λ¦¬, νΈμΆλ λ λ°ν νμ μ΄ κ³ μ λμ§ ..
1. ꡬν μ½λ μ΄ μ½λλ νμ΄μ§λ€μ΄μ μ μ€μ νλ `setupPagination` ν¨μμ κ΄λ ¨ κΈ°λ₯μ ꡬνν μ½λμ λλ€. λ€μμ κ° λΆλΆμ μ€λͺ μ λλ€: 1. `setupPagination` ν¨μ: - `rowsPerPage`: ν νμ΄μ§μ 보μ¬μ€ νλͺ© μλ₯Ό λνλ΄λ λ³μμ λλ€. - `rows`: νμ΄μ§λ€μ΄μ μ μ μ©ν νλͺ©λ€μ λ°°μ΄μ λλ€. - `rowsCount`: νλͺ©μ μ΄ κ°μλ₯Ό λνλ΄λ λ³μμ λλ€. - `pageCount`: μ 체 νμ΄μ§ μλ₯Ό λνλ΄λ λ³μμ λλ€. - `numbers`: νμ΄μ§ λ²νΈλ₯Ό νμνλ μμ(μ: μ«μ λͺ©λ‘)λ₯Ό λνλ΄λ λ³μμ λλ€. - `prevPageBtn`, `nextPageBtn`: μ΄μ νμ΄μ§ λ° λ€μ νμ΄μ§λ‘ μ΄λνλ λ²νΌμ λνλ΄λ λ³μμ λλ€. - `pageActiv..