22장.Eager Loading
이번장은 perloading에 대해서 나온다.
예를들면 post 1---* comment란 관계가 있는데.(굳이 1--*관계가 아니라도 상관없음.)
post = Post.find(:all)
for post in @post
post.name
post.comment.name
do
이렇식으로 하면 post.comment.name 이부분이 for문을 돌면서 매번 패칭을 한다.
그래서 이방법을 해소하기 위해 :include을 사용하면 미리 해당 건을 가져 오기 때문에
한번의 패칭으로 같은 효과를 낼수 있다.
post = Post.find(:all) -> post = Post.find(:all,:include=>:comments) 로 바꿔주면 됨.
하지만 이방법은 left outer조인이 지원을 해야한다.즉,오라클 8i는 안됨.
23장.Counter Cache Column
이번장은 counter cache기법이다.
has_many 관계에서 이글에 딸린 커멘트수 같은걸 구할때 매번 조인을해서 구하는것이
아니라 캐싱하는기법.
자식 액티브래코더에 belongs_to :부모이름_cache => ture을 정하고
부모테이블에 자식이름_count 컬럼을 만들어 자동으로 캐싱됨.
좋긴한데... textmate가 있어야한다.아쉽..RDT로는 안되나?..한번 확인해봐야겠다
25장.SQL Injection
다른 언어와 같이 파라메터를 바인딩하는것으로 sql injection을 막는방법.
일반 언어와 같음.
이번장은 perloading에 대해서 나온다.
예를들면 post 1---* comment란 관계가 있는데.(굳이 1--*관계가 아니라도 상관없음.)
post = Post.find(:all)
for post in @post
post.name
post.comment.name
do
이렇식으로 하면 post.comment.name 이부분이 for문을 돌면서 매번 패칭을 한다.
그래서 이방법을 해소하기 위해 :include을 사용하면 미리 해당 건을 가져 오기 때문에
한번의 패칭으로 같은 효과를 낼수 있다.
post = Post.find(:all) -> post = Post.find(:all,:include=>:comments) 로 바꿔주면 됨.
하지만 이방법은 left outer조인이 지원을 해야한다.즉,오라클 8i는 안됨.
23장.Counter Cache Column
이번장은 counter cache기법이다.
has_many 관계에서 이글에 딸린 커멘트수 같은걸 구할때 매번 조인을해서 구하는것이
아니라 캐싱하는기법.
자식 액티브래코더에 belongs_to :부모이름_cache => ture을 정하고
부모테이블에 자식이름_count 컬럼을 만들어 자동으로 캐싱됨.
24장.The Stack Trace
stack trace로 디버깅하는방법.좋긴한데... textmate가 있어야한다.아쉽..RDT로는 안되나?..한번 확인해봐야겠다
25장.SQL Injection
다른 언어와 같이 파라메터를 바인딩하는것으로 sql injection을 막는방법.
일반 언어와 같음.