태그 : java 요약보기전체보기목록닫기

1 2 3 4

FindBugs 적용 후 흔히 발생하는 버그 패턴들

회사의 모든 프로젝트는 FindBugs 지표 수집을 하게 돼 있는데 이를 SonarQube를 통해 프로젝트 건강성 지표로만 삼고 있었다(findbugs, jacoco code coverage, checkstyle, pmd 등을 수집한다).하지만 지표는 참조일뿐 강제가 아니고, 바쁘면 바쁘다는 핑계로 무시하게 마련이다.그러다가 팀원들과 팀 프로젝트에서 F...

동적 Native SQL 생성 어떻게 할까 - 순수 Java 코드로 생성하기

앞서 Freemarker Dynamic QL Builder에 이어, 순수 Java 코드로 동적 Native SQL/JPQL/HQL을 생성하는 방법에 대한 고민의 결과를 이제서야 공유한다.나는 어쩔 수 없이 동적 NativeSQL을 작성해야하는 상황에서라도 MyBatis/iBatis나 Freemarker 같은 외부 템플릿을 사용하는 것을 좋아하지...

동적 Native SQL 생성 어떻게 할까 - Freemarker Dynamic QL Builder

나는 ORM 그중에서 JPA/Hibernate를 주로 사용하는 사람이다.작년 이맘때쯤 꽤 오래된 DB 구조에 iBatis로 만들어진 프로젝트를 JPA로 전환하는 작업을 했는데, 그 와중에 딱 한 개의 쿼리가 도저히 Native SQL을 사용하지 않으면 안되는데, 게다가 매우 동적이라 WHERE 조건문이 10여개 이상의 값의 상태에 따라 달라지게 구성되었...

Java 에서 DataBase Replication Master/Slave (write/read) 분기 처리하기

대규모 서비스 개발시에 가장 기본적으로 하는 튜닝은 바로 데이터베이스에서 Write와 Read DB를 Replication(리플리케이션)하고 쓰기 작업은 Master(Write)로 보내고 읽기 작업은 Slave(Read)로 보내어 부하를 분산 시키는 것이다.특히 대부분의 서비스는 읽기가 압도적으로 많기 때문에  Slave는 여러 대를 두어 읽기...

JDBC SQL 구문에 클라이언트 정보 남기기

DB 서버가 한 대 있고, 해당 서버에 접속해서 쿼리를 날리는 Java 웹 애플리케이션이 여러 개라고 해보자.커머스 업체라고 했을 때 사용자 화면 애플리케이션, 상품 정보 관리 애플리케이션, 정산 애플리케이션 등이 별도로 존재하며 어떤 특정 DB에 모두 동시에 접속하는 경우가 발생한다는 것은 쉽게 예상할 수 있을 것이다.DB 서버의 로그를 보니 Slow...

JSP/Freemarker 템플릿 상속을 통한 레이아웃 관리

ᅟJava 웹 개발자들은 웹 페이지 템플릿 프레임워크는 JSP나 Freemarker 등을 사용하고 레이아웃을 관리할 때는 또 Sitemesh나 Tiles 같은 별도 프레임워크를 도입하고 있다. 사실 얼마전까지는 다른 선택사항이 없었다.하지만 Java 외의 다른 언어 세계에서는 레이아웃을 관리할 때 별도의 프레임워크를 거의 사용하지 않고 있다. Djang...

그냥 나 자신과 이쪽 업계에 새로 들어오시는 분들께 하고 싶던말..

오늘 어떤 분이 무려 5년전에 썼던 초보 자바 웹개발자들을 위한 학습 로드맵 글에 댓글을 다셨길래 다음과 같은 댓글로 대답하였다.자꾸 공부 안하고 안주하려드는 나 자신에게, 그리고 이쪽 업계의 새내기 분들께 하고 싶던 말이라서 남겨둠.이제는 Struts2는 사실상 끝난 듯하고 Spring MVC가 장악하였습니다.SVN은 Git으로 바뀌고 있으며, Mav...

Maven을 넘어 Gradle로 가자.

Maven을 써 본 사람들은 대부분 느끼리라 생각하지만 매우 경직돼 있고 그로인해 무언가 Maven이 기본 지원하지 않는 빌드 과정을 추가해야 할 경우 고생이 이만 저만이 아니다. 이에, 요즘 Maven 대한 대안이 많이 나오고 있으며 그 중 가장 돋보이는 것이 Gradle(Groovy 기반)이 아닌가 싶다. 그래서 차기 프로젝트의 빌드 툴로 Gradl...

Java에서 비밀번호는 char [] 로 저장하자.

사용자에게서 비밀번호를 입력받아 저장하거나, 올바른 사용자인지 검증하는 과정에서 필연적으로 컨트롤러에서 비밀번호를 받아서 잠시동안 메모리에 가지고 있을 수 밖에 없다.물론 SSL과 비밀번호 암호화(복호화가 불가능한  SHA2 + SALT 등으로)를 하겠지만, 암호화를 하기전 중간 과정에 메모리에 비밀번호가 남아있는 그 동안에도 보안에 신경써야 ...

[DEBUG] Maven Incompatible types 오류

Maven 으로 컴파일을 하는데 Incompatible types 오류가 발생하였다.[ERROR] /private/tmp/framework/src/main/java/org/jboss/narayana/txframework/api/annotation/service/ServiceRequest.java:[32,56] incompatible typesfound ...
1 2 3 4