본문 바로가기

IT/Java

@Transactional 이란? 사용이유 1. 스프링의 트랜잭션 지원 - 스프링은 코드 기반의 트랜잭션 처리(Programmatic Transaction) 뿐만 아니라 선언적 트랜잭션(Declarative Transaction)을 지원하고 있다. 스프링이 제공하는 트랜잭션 템플릿 클래스를 이용하거나 설정 파일, 어노테이션을 이용해서 트랜잭션의 범위 및 규칙을 정의할 수 있다. 2. 선언적 트랜잭션 처리 - 선언적 트랜잭션은 설정 파일이나 어노테이션을 이용해서 트랜잭션의 범위, 롤백 규칙 등을 정의 - 다음과 같은 2가지 방식으로 정의 1) 태그를 이용한 트랜잭션 처리 2) @Transactional 어노테이션을 이용한 트랜잭션 설정 다음 소스로 예를 들어보겠다. /** * 사업부 정보 등록,수정 * @param map * @return * @t.. 더보기
POI 라이브러리를 이용한 엑셀파일 쓰기 Apache POI - 정의: Microsoft Documents를 사용할 수 있게 해주는 자바 라이브러리 - 기능 1) POIFS Microsoft의 ole2 포맷 형식의 문서를 자바로 읽고 쓸수 있는 컴퍼넌트임. 기본적으로 POI의 모든 컴퍼넌트들이 POIFS를 사용한다. 2) HSSF Microsoft의 엑셀파일을 읽고 쓸 수 있도록 지원하는 컴퍼넌트임 3) HWPF Microsoft의 워드파일을 읽고 쓸 수 있도록 지원하는 컴퍼넌트임(핸들링 단계이기 때문에 아직 사용은 못함) - 메소드 설명 * org.apache.poi.hssf.usermodel.HSSFCell 의 setCellFormula("formulaString") 메소드는 스프레드시트에 수식을 추가하는데 사용되고, getCellFormu.. 더보기
@SuppressWarnings("rawtypes") 자바 @SuppressWarnings("rawtypes") 와 같은 어노테이션을 사용하는 이유는? 자바에서 노란색으로 Warnings이 나타나는 경우 어노테이션을 이용하여 문제를 해결할 수 있다. @SuppressWarnings - 컴파일 경고를 무시함 1. all : 모든 경고를 억제2. cast : 캐스트 연산자 관련 경고 억제3. dep-ann : 사용하지 말아야 할 주석 관련 경고 억제4. deprecation : 사용하지 말아야 할 메소드 관련 경고 억제5. fallthrough : switch문에서의 break 누락 관련 경고 억제6. finally : 반환하지 않는 finally 블럭 관련 경고 억제7. null : null 분석 관련 경고 억제8. rawtypes : 제네릭(데이터 형식에 의존하.. 더보기
자바 pass by value pass by reference? ◆ 매개변수/ 인자의 정의 1) 매개변수(Parameter) - 함수(메소드)를 선언할 때 전달하는 변수 2) 인자(Argument) - 함수(메소드)를 호출(실행)할 때 전달하는 변수 int main() { int argument = 5; test(argument); return 0; } void test(int parameter){ } ◆ 인자전달 방식 1) call-by-value - 메서드 호출 시 기본 자료형의 값을 인자로 전달하는 방식- 호출 시의 실인자는 별도의 값으로 인식되어 영향을 받지 않음 2) call-by-reference- 메서드 호출 시 전달하려는 인자를 참조(객체) 자료형을 사용한 경우를 의미- 하나의 객체를 참조하는 변수가 2개가 되어 어느 한 곳에서 수정을 하게 되면 같은 .. 더보기
이클립스 단축키 ▶ Ctrl + Shift + F ⇒ 자동 줄맞춤.▶ Ctrl + W ⇒ 창 끄기.▶ Ctrl + Shift + F4 ⇒ 모두 닫기.▶ Ctrl + Shift + L ⇒ 모든 단축키 보기.▶ Ctrl + 1 ⇒ 에러 자동 해결.▶ Ctrl + Spacebar ⇒ 문장 자동 완성.▶ Ctrl + L ⇒ 창에 숫자 입력->원하는 라인으로 이동.▶ Shift + Alt + R ⇒ 같은 이름 모두 바꾸기.▶ 블록지정 +Shift + Alt + Z ⇒ 관련된 여러 가지 기능 문들 나옴.▶ Ctrl + Shift + F ⇒ 알아서 정렬.▶ Ctrl + Shift + / , \ ⇒ 블록 주석, 풀기.▶ Ctrl + O ⇒ 해당 소스의 메소드 리스트를 확인▶ Ctrl + T ⇒ 계층 구조 보기▶ Ctrl + / ⇒ 한.. 더보기
String, StringBuffer, StringBuilder란? (Synchronized 플러스 설명) String - 문자열을 처리하는 특별한 시스템 클래스의 객체이며, 변형 불가능(immutable)하다. (String 클래스의 객체는 Heap 상에 생성될 경우 한버에 생성된 객체의 내부 내용을 변화시킬 수 없다는 뜻) - String 인스턴스를 생성할 때 메모리의 힙 영역에 할당되며 다시는 바꿀수가 없다.(문자열이 더해질 때 마다 새로운 힙 영역이 할당되며 메모리를 많이 차지하게 됨) StringBuffer, StringBuilder - StringBuffer와 StringBuilder는 String과는 다르게 변형 가능(mutable)하다. - 내부적으로 배열의 형태로 선언되기 때문에 문자열 처리 후 새로운 인스턴스가 할당되는 것이 아닌 기존의 객체에 이어 붙인다. 따라서 훨씬 속도도 빠르고 공간의.. 더보기
super, this super, this ex) public CoffeeValue(String coffeeName, int capacity) { coffeeName = coffeeName; capacity = capacity; } 클래스 속성인 coffeeName 변수는 생성자의 실행부 밖에 선언되어 있으므로 자바 컴파일러는 coffeeName = coffeeName 구문을 매개변수에 다시 매개변수의 값을 대입하는 것으로 인식한다. 그러므로 분석하기 쉽지 않다. 앞서 코딩한 CoffeValue 클래스의 생성자를 위와 같이 변경하고 다시 실행해보면 CoffeeValue 클래스의 속성인 capacity와 coffeeValue 변수는 아무런 값도 대입되지 않기 때문에 실행 결과 capacity는 기본값인 0을, coffeeVal.. 더보기
오버로딩과 오버라이딩 기법 구분 오버로딩(다형성을 구현하는 오버로딩) - 메소드의 이름은 하나지만 여러가지 형태를 갖음 - 생성자도 메소드의 한 종류이므로 오버로딩이 가능 - 단, 매개변수가 같지만 반환 데이터형이 다른 경우를 오버로딩이라고 착각하지 말자 - 사용법: 메소드의 선언부의 반환형과 메소드 이름은 반드시 같아야 한다. 매개변수의 개수가 데이터형이 반드시 달라야 한다. - 사용예: public void setStatus (int i){ ... } public void setStatus (String str){ ... } - 장점: 오버로딩된 메소드는 편리하다, 클래스에서 메소드 이름을 절약할 수 있다. 오버라이딩(재정의를 가능하게 해주는 오버라이딩) - "부모클래스에서 자식 클래스와 동일하게 이름의 변수나 메소드가 있다면 자식.. 더보기
상속(extends), 상속의 장점, 클래스 상속 구조 상속(extends) - 클래스들 사이에 관계를 설정하는 것 - 클래스의 자원 즉, 메소드나 속성 등을 전달해 주는 것을 의미 - 사용법: [제어자] class [클래스 이름] extends [부모 클래스 이름] - 사용하는 가장 큰 이유는 소스의 재활용 - 상속기법을 적용하는 과정: 객체의 추상화->공통점 추출->공통객체생성->is-a 법칙 검증-> 상속적용 상속의 장점 1. 코드를 재활용함으로써 간소화된 클래스 구조 2. 클래스의 기능 테스트에 대한 생산성 및 정확성 증가 3. 클래스 수정/추가에 대한 유연성 및 확장성 증가 상속 기법을 사용할 때 지켜야하는 규칙 1. 자식 클래스는 단 하나의 부모 클래스로부터 상속받은 수 있다(다중 상속 금지) 2. 상속받는 자식 클래슨느 다른 클래스의 부모 클래스.. 더보기
자바 명명 규칙 명명 규칙(Naming Convention) 1. 클래스 이름 - 반드시 대문자로 시작 - 생성자 이름은 클래스 이름과 같이 반드시 대문자로 시작 - 클래스 이름을 만들 때는 해당클래스가 어떤 목적으로 만들어졌는지 유추 가능하도록 만든다. ex) public class Profile public class UserProfile public class UserProfileManager 2. 메소드 이름 - 소문자로 시작 - 여러 단어로 조합되면 첫 단어를 제외하고 다음 단어의 첫글자는 대문자로 시작 - 보통 메소드는 클래스 기능을 담당하므로 동사로 시작 ex) public void print() public void printScrean() public UserProfile generateUserProfi.. 더보기