스마일광

'▒ Programming/JAVA_JSP'에 해당되는 글 4건

  1. 이클립스 단축키
  2. iBatis sqlMap 설정하기
  3. 이클립스에서 Heap Stack Memoy부족

이클립스 단축키

▒ Programming/JAVA_JSP
===== 실행 =====
1. Ctrl + F11 : 바로 전에 실행했던 클래스 실행

===== 소스 네비게이션 =====
1. Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때
2. Alt + ->, Alt + <- : 이후, 이전
3. Ctrl + o : 해당 소스의 메소드 리스트를 확인하려 할때
4. F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.
===== 문자열 찾기 =====
1. Ctrl + k : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.
2. Ctrl + Shift + k : 역으로 찾고자 하는 문자열을 찾아감.

3. Ctrl + j : 입력하면서 찾을 수 있음.
4. Ctrl + Shift + j : 입력하면서 거꾸로 찾아갈 수 있음.
5. Ctrl + f : 기본적으로 찾기

===== 소스 편집 =====
1. Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다.
2. F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.
3. Ctrl + l : 원하는 소스 라인으로 이동
  로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.
4. Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.
5. 한줄 삭제 CTRL + D
6. 파일 닫기 : CTRL+W
7. 들여쓰기 자동 수정. (3.0 NEW) : CTRL+I
8. 블록 주석(/*..*/) 추가.(3.0 NEW): CTRL+SHIFT+/
8.1 Ctrl + / 해주면 여러줄이 한꺼번에 주석처리됨. 주석 해제하려면 반대로 하면 됨.
9. 위(아래)줄과 바꾸기 : ALT+UP(DOWN)
10. 블록 선택하기.  : ALT+SHIFT+방향키
11. 메소드의 파라메터 목록 보기. : CTRL+SHIFT+SPACE
12. 자동으로 import 하기 : CTRL+SHIFT+O
13. 열린 파일 모두 닫기 : CTRL + SHIFT + F4
14. 블록 주석 제거 : CTRL+SHIFT+
15. 전체화면 토글 : CTRL+M
16. 한줄(블럭) 복사 : Ctrl + Alt + 위(아래)
17. 다음 annotation(에러, 워닝, 북마크 가능)으로 점프 : Ctrl + , or .
18. 퀵 픽스 : Ctrl + 1
19. 메소드 정의부로 이동 : F3
20. 하이어라키 팦업 창 띄우기(인터페이스 구현 클래스간 이동시 편리) : Ctrl + T
21. 메소드나 필드 이동하기 CTRL + O
22. ULTRAEDIT나 EDITPLUS 의 CTRL+TAB 과 같은 기능. : CTRL+F6

===== 템플릿 사용 =====
1. sysout 입력한 후 Ctrl + Space 하면 System.out.println(); 으로 바뀐다.
2. try 입력한 후 Ctrl + Space 하면 try-catch 문이 완성된다.
3. for 입력한 후 Ctrl + Space 하면 여러가지 for 문을 완성할 수 있다.
4. 템플릿을 수정하거나 추가하려면 환경설정/자바/편집기/템플리트 에서 할 수 있다.

===== 메소드 쉽게 생성하기 =====
1. 클래스의 멤버를 일단 먼저 생성한다.
2. override 메소드를 구현하려면 : 소스->메소드대체/구현 에서 해당 메소드를 체크한다.
3. 기타 클래스의 멤버가 클래스의 오브젝트라면 : 소스->위임메소드 생성에서 메소드를 선택한다.

===== organize import =====
1. 자바파일을 여러개 선택한 후 소스 -> 가져오기 체계화 해주면 모두 적용된다.

===== 소스 코드 형식 및 공통 주석 설정 =====
1. 환경설정 -> 자바 -> 코드 스타일 -> 코드 포멧터 -> 가져오기 -> 프로파일.xml 을 불러다가 쓰면 된다.
2. 또한 다수의 자바파일에 프로파일을 적용하려면 패키지 탐색기에서 패키지를 선택한 후 소스 -> 형식화를 선택하면 된다.
3. 환경설정 -> 자바 -> 코드 스타일 -> 코드 템플리트 -> 가져오기 -> 템플리트.xml 을 불러다가 쓰면 된다.

===== 에디터 변환 =====
1. 에디터가 여러 파일을 열어서 작업중일때 Ctrl + F6 키를 누르면 여러파일명이 나오고 F6키를 계속 누르면 아래로
2. Ctrl + Shift + F6 키를 누르면 위로 커서가 움직인다.
3. Ctrl + F7 : 뷰간 전환
4. Ctrl + F8 : 퍼스펙티브간 전환
5. F12 : 에디터로 포커스 위치

출처 ; 자바(java) 초보 스터디 :: 네이버 카페

iBatis sqlMap 설정하기

▒ Programming/JAVA_JSP
iBatis sqlMap 설정하기
 
SQL Map 설정 파일 (SqlMapConfig.xml)은 iBatis의 중심이 되는 파일이다. 
SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
  <properties resource="db.properties"/>

  <!-- 글로벌 설정 옵션 영역 -->
  <settings
    useStatementNamespace="false"
    cacheModelsEnabled="true"
    enhancementEnabled="true"
    lazyLoadingEnabled="true"
    maxRequests="32"
    maxSession="10"
    maxTransactions="5"
  />

  <!-- 트랜잭션 관리자 -->
  <transactionManager type="JDBC">
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="${driver}"/>
      <property name="JDBC.ConnectionURL" value="${url}"/>
      <property name="JDBC.Username" value="${user}"/>
      <property name="JDBC.Password" value="${pword}"/>
    </dataSource>
 </transactionManager>

<!-- SqlMap 파일 참조 -->
<sqlMap resource="org/apache/mapper2ii15/SqlMap.xml"/>

</sqlMapConfig>

1. <properties> 엘리먼트
<properties>엘리먼트는 이름/값 쌍으로 구성된 메인 설정 파일에 앞으로 사용될 설정을 지정하는 곳이다. 이것은 애플리케이션 개발에 매우 유용하다. 왜냐하면 환경 설정에 의존되는 공유 설정 내용에 분리되어 이용할 수 있도록 한다.
프로퍼티 파일을 이용하는 데는 2가지 방법이 있다. 각 속성은 다음과 같이 지정한다.

  • resource - 클래스 패스에 있는 자원 혹은 파일
  • url - Uniform Resource Locator(URL)
resource 속성을 이용할때 classloader은 애플리케이션의 클래스 패스에 있는 자원의 위치에서 값을 가져온다.
이것은 resource라고 불리며, 클래스 로더가 이값을 읽을 것이다. Java 도큐먼트는 이러한 방법으로 데이터파일에 접근을 하며, JAR파일 내의 엔트리까지 읽을 수 있다. 그리고 서로다른 컴퓨터의 내용도 읽을 수 있다.

URL 속성은 java.net.URL클래스에 의해서 핸들된다.

이전 예제는 <properties> 엘리먼트를 이용하여 db.properties로 불리는 파일을 classpath를 읽고 있다.

db.properties는 다음과 같이 지정한다.

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/test
user=root
pword=apple

이러한 파일을 로드하기 위해서 다음과 같이 기술한다.

<properties resource="db.properties"/>

마지막으로 지정된 값은 이렇게 이용한다.

<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${user}"/>
<property name="JDBC.Password" value="${pword}"/>

2. <setting> 엘리먼트
<setting>엘리먼트는 설정 옵션의 환경에 대한 설정이다. 이 설정값을 통해서 글로벌 SQL Map 인스턴스에 대해서 설정이 가능하다.

lazyLoadingEnabled
- 늦은 로딩은 가능하면 절대 경로를 이용하지 않고서 객체를 이용하기 위해서 사용한다. 이 값을 설장하면 관련된 스테이트먼트를 늦은 로딩을 이용하여 처리할 것인지 결정할 수 있다. 이 값은 true/false로 지정하며 기본값은 true이다. 이 기능은 1000명의 사용자가 25개의 아이템에 1000개의 작업을 처리하고자 할경우 25,000, 000개의 객체가 생성되어야 하고, 메모리에 이러한 객체를 가지고 있어야 하지만 늦은 로딩을 이용함으로 해서 2500개의 작업만 처리할 수 있도록 해주어, 자원과 속도의 향상을 가져오게 된다.

cacheModelsEnabled
- 캐싱은 성능향상을 위한 기술이다. 이것은 메모리 기반에서 수행됨을 의미한다. 캐시모델 설정을 하면 iBatis에서 캐싱을 수행할 수 있다. 이 값은 true/false를 설정하게 된다.

enhancementEnabled
- 이 설정은 cglib 옵티마이즈된 클래스를 이용하고자 할때 이용한다. 이것은 lazy loading를 수행하며, true/false에 의해서 지정이 가능한다.
- cglib는 iBatis에서 실행시간에 특정 함수를 생성하고, JavaBeans 프로퍼티를 설정하도록 한다.

useStatementNamespaces
- 이것은 매핑되는 문장의 컬리파이드
이름을 이용할것인지 설정하는 것이다. 이 값은 true/false를 지정하여 설정이 가능하며, 기본값은 false이다
- Sql 맵이 지정되면 팹의 이름은 쿼리파이드 이름으로 보통 이용된다.
- 예를 들어 SQL 맵 이름으로 Account라는 이름이 있다면 매핑된 구분의 이름이 insert, update, delete, getAll등으로 지정한다고 했을때, 이름을 이용하기 위해서는 Account.insert라는 매핑을 이용해야 접근할 수 있다. 그렇게 되면 매핑 충돌이 일어나지 않는다.
이것은 차후에 대규모 프로젝트를 수행할때 상당히 유용한 기능이 된다.

3. <typeAlias> 엘리먼트
org.apache.ibatis.jgamestore.domain.Account같은 이름의 타입이 사용되지 않고 작성되어 있다면 아무도 모를 것이다. <typeAlias>엘리먼트는 Account와 같은 앨리어스를 이용하여 퀄리파이드 이름을 대체하여 사용할 수 있도록 한다.
다음과 같이 지정할 수 있다.
<typeAlias alias="Account" type="org.apache.ibatis.jgamestore.domain.Account" />
Account 앨리어스는 설정을 수행하고 난후 쉽게 이용할 수 있다. 서정파일 내에서 재 사용이 가능하다.

4. <transactionManager> 엘리먼트
iBatis는 데이터베이스 접근을 간단하게 만들어 준다. 이것은 데이터베이스의 트랜잭션을 관리해 준다는 의미이다. 트랜잭션 관리를 할때 몇몇 지정된 트랜잭션 관리자가 이미 정의되어 있다. 이미 지정된 트랜잭션 관리자는  JDBC, JTA, EXTERNAL이 있다.
트랜잭션 관리자의 속성중에 commitRequired속성이 있다. 이것은 true/false로 지정이 가능하며 기본값은 false이다. 이것은 데이터베이스에서 접속해서 작업을 하고, 커넥션을 일리즈 할때, 반드시 commit나 rollback를 요구한다.

5. <property> 엘리먼트
각 트랜잭션 관리자는 서로다른 설정 옵션을 가지고 있따. iBatis 프레임워크는 <property>를 이용하기 때문에 트랜잭션이 필요로 하는 다양한 프로퍼티를 지정할 수 있다.

6. <dataSource>엘리먼트
자바에서 javax.sql.DataSource객체를 이용할때 connection Pool과 함께 주로 이용한다. <dataSource>엘리먼트는 데이터소스 팩토리로 부터 생성된 객체를 호출하여 사용하도록 하고 있으며, DataSourceFactory는 실제적인 데이터소스를 생성하는데 이용한다.
데이터소스 팩토리는 다음과 같이 iBatis에 구현되어 있으며 다음과 같은 종류가 있다.
- Simple : 단순한 데이터소스 팩토리로, 단일 커넥션 풀을 생성하고 있따. 이것은 iBatis 프레임워크에 포함되어 있으며, 이것은 JDBC드라이버를 필요로 한다.
- DBCP : DBCP 데이터소스 팩토리는 Jakarta Commons Data Connection Pool으 이용하여 생성되는 팩토리이다.
- JNDI : JNDI 데이터소스 팩토리는 iBatis에게 공유 컨테이너를 상요할 수 있도록 해준다. 이것은 JNDI를 통해서 접근이 가능하다.

7. <typeHandler> 엘리먼트
iBatis는 애플리케이션의 데이터타입과, JDBC데이터타입을 매핑하기 위해서 타입 핸들러를 이용한다.
그러므로 단순하게 애플리케이션 데이터를 JDBC타입으로 자동 변환하게 된다. 대부분의 상황에서 이러한 컴포넌트는 매우 단순하다. StringTypeHandler는 단순하게 getString메소드를 이용하여 String을 반환한다. 다른 상황에서 더욱 복잡한 타입으로 변경이 가능하다. 예를 들어 Boolean타입은 Y, N을 이용함으로 해서 True/False로 변환이 가능하게 된다.
새로운 타입 변환이 필요하게 된다면 타입 핸들러를 지정하여 애플리케이션과 JDBC데이터타입을 매핑시켜주면 된다. 대부분의 경우에 커스텀 타입핸들러를 이용할 필요는 없을것이다.

8. <sqlMap> 엘리먼트
마지막으로 SqlMapConfig.xml에서는 <sqlMap>엘리먼트를 설정하도록 하고 있다. 이것은 서로다른 2개의 설정이 필요할때 이용하게 된다. 이것 역시 JAR파일이나  WAR파일에 포함된 내용에 접근이 가능하게 되며, classpath를 루트로 해서 참조하면 된다.
보다 명확한 위치를 지정하여 사용하고자 할때에는 url속성을 이용할 수 있다. 이 속성은 java.net.URL클래스를 이용하여 접근할 수 있도록 해준다.

이클립스에서 Heap Stack Memoy부족

▒ Programming/JAVA_JSP
servers tab에서 해당 server를 더블클릭을 한다.


다음과 같은 화면이 나온다.

open launch configuration을 클릭을 하고, argument tab에서 다음과 같은 옵션을 추가해야 한다.

MaxPermSize는 spring이나 여러가지 framework에서 내부적으로 reflection을 많이 사용하기때문에 반드시 메모리를 늘려줘야 한다.  

tomcat memory option
-XX:MaxPermSize=128m -Xms128m -Xmx512m